diff options
author | Sascha Ballach <sab@openoffice.org> | 2000-10-19 15:01:39 +0000 |
---|---|---|
committer | Sascha Ballach <sab@openoffice.org> | 2000-10-19 15:01:39 +0000 |
commit | 9cd39996b71db09bb676f5159f16ecfe0ddcba0e (patch) | |
tree | e95b5723b027ebc8cf0189cdc26feae164a7cde7 /sc/source/filter/xml/xmlcoli.cxx | |
parent | d95946729a8d65a673fc3a80c47a95ee4d74e8f7 (diff) |
Import Header Columns added
Diffstat (limited to 'sc/source/filter/xml/xmlcoli.cxx')
-rw-r--r-- | sc/source/filter/xml/xmlcoli.cxx | 91 |
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); + } + } + } + } + } + } +} |