summaryrefslogtreecommitdiff
path: root/sc/source/filter/xml/xmlcoli.cxx
diff options
context:
space:
mode:
authorSascha Ballach <sab@openoffice.org>2000-10-19 15:01:39 +0000
committerSascha Ballach <sab@openoffice.org>2000-10-19 15:01:39 +0000
commit9cd39996b71db09bb676f5159f16ecfe0ddcba0e (patch)
treee95b5723b027ebc8cf0189cdc26feae164a7cde7 /sc/source/filter/xml/xmlcoli.cxx
parentd95946729a8d65a673fc3a80c47a95ee4d74e8f7 (diff)
Import Header Columns added
Diffstat (limited to 'sc/source/filter/xml/xmlcoli.cxx')
-rw-r--r--sc/source/filter/xml/xmlcoli.cxx91
1 files changed, 89 insertions, 2 deletions
diff --git a/sc/source/filter/xml/xmlcoli.cxx b/sc/source/filter/xml/xmlcoli.cxx
index 45c57f20167e..5eef271edec8 100644
--- a/sc/source/filter/xml/xmlcoli.cxx
+++ b/sc/source/filter/xml/xmlcoli.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: xmlcoli.cxx,v $
*
- * $Revision: 1.1.1.1 $
+ * $Revision: 1.2 $
*
- * last change: $Author: hr $ $Date: 2000-09-18 16:45:15 $
+ * last change: $Author: sab $ $Date: 2000-10-19 16:01:39 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -90,6 +90,9 @@
#ifndef _COM_SUN_STAR_TABLE_XCOLUMNROWRANGE_HPP_
#include <com/sun/star/table/XColumnRowRange.hpp>
#endif
+#ifndef _COM_SUN_STAR_SHEET_XPRINTAREAS_HPP_
+#include <com/sun/star/sheet/XPrintAreas.hpp>
+#endif
#define SC_ISVISIBLE "IsVisible"
@@ -237,3 +240,87 @@ void ScXMLTableColContext::EndElement()
}
GetScImport().GetTables().AddColCount(nColCount);
}
+
+ScXMLTableColsContext::ScXMLTableColsContext( ScXMLImport& rImport,
+ USHORT nPrfx,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
+ const sal_Bool bTempHeader) :
+ SvXMLImportContext( rImport, nPrfx, rLName ),
+ nStartCol(0),
+ nEndCol(0),
+ bHeader(bTempHeader)
+{
+ // don't have any attributes
+ if (bHeader)
+ {
+ nStartCol = rImport.GetTables().GetCurrentColumn();
+ }
+}
+
+ScXMLTableColsContext::~ScXMLTableColsContext()
+{
+}
+
+SvXMLImportContext *ScXMLTableColsContext::CreateChildContext( USHORT nPrefix,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList )
+{
+ SvXMLImportContext *pContext = 0;
+
+ const SvXMLTokenMap& rTokenMap = GetScImport().GetTableColsElemTokenMap();
+ sal_Bool bHeader = sal_False;
+ switch( rTokenMap.Get( nPrefix, rLName ) )
+ {
+ case XML_TOK_TABLE_COLS_COL:
+ pContext = new ScXMLTableColContext( GetScImport(), nPrefix,
+ rLName, xAttrList//,
+ //this
+ );
+ break;
+ }
+
+ if( !pContext )
+ pContext = new SvXMLImportContext( GetImport(), nPrefix, rLName );
+
+ return pContext;
+}
+
+void ScXMLTableColsContext::EndElement()
+{
+ ScXMLImport& rXMLImport = GetScImport();
+ nEndCol = rXMLImport.GetTables().GetCurrentColumn();
+ nEndCol--;
+ if (bHeader && nStartCol <= nEndCol)
+ {
+ sal_Int16 nSheet = rXMLImport.GetTables().GetCurrentSheet();
+ uno::Reference <sheet::XSpreadsheetDocument> xSheetsDocument (rXMLImport.GetModel(), uno::UNO_QUERY);
+ if(xSheetsDocument.is())
+ {
+ uno::Reference<sheet::XSpreadsheets> xSheets = xSheetsDocument->getSheets();
+ if (xSheets.is())
+ {
+ uno::Reference<container::XIndexAccess> xIndex(xSheets, uno::UNO_QUERY);
+ if (xIndex.is())
+ {
+ uno::Any aSheet = xIndex->getByIndex(nSheet);
+ uno::Reference<sheet::XSpreadsheet> xSheet;
+ if(aSheet >>= xSheet)
+ {
+ uno::Reference <sheet::XPrintAreas> xPrintAreas (xSheet, uno::UNO_QUERY);
+ if (xPrintAreas.is())
+ {
+ xPrintAreas->setPrintTitleColumns(sal_True);
+ table::CellRangeAddress aColumnHeaderRange;
+ aColumnHeaderRange.StartColumn = nStartCol;
+ aColumnHeaderRange.EndColumn = nEndCol;
+ xPrintAreas->setTitleColumns(aColumnHeaderRange);
+ }
+ }
+ }
+ }
+ }
+ }
+}