diff options
author | Kohei Yoshida <kohei.yoshida@collabora.com> | 2014-03-13 21:49:04 -0400 |
---|---|---|
committer | Markus Mohrhard <markus.mohrhard@googlemail.com> | 2014-03-14 02:38:13 -0500 |
commit | 00b7d4c8043a0c6b9e267f0fd5d7389128628ca0 (patch) | |
tree | c854c58ea4d9f8e6b060f7e85f6785cbebd31273 | |
parent | b5b9da46ceae23b25e963087d00b0ae5b4785c93 (diff) |
fdo#58307: Export sheet tab colors to xlsx.
And let's not re-use Biff's XclExpWsbool record class to export <SheetPr>
elements. That was a bit hacky...
(cherry picked from commit 5063f31c248fd3c16115582a1e3aef182257a225)
Conflicts:
sc/source/filter/excel/excrecds.cxx
sc/source/filter/inc/excrecds.hxx
Change-Id: Ia585f53d547af3d6840fce1b1244b60bb5076b07
Reviewed-on: https://gerrit.libreoffice.org/8583
Tested-by: Markus Mohrhard <markus.mohrhard@googlemail.com>
Reviewed-by: Markus Mohrhard <markus.mohrhard@googlemail.com>
-rw-r--r-- | sc/source/filter/excel/excdoc.cxx | 3 | ||||
-rw-r--r-- | sc/source/filter/excel/excrecds.cxx | 24 | ||||
-rw-r--r-- | sc/source/filter/inc/excrecds.hxx | 25 |
3 files changed, 36 insertions, 16 deletions
diff --git a/sc/source/filter/excel/excdoc.cxx b/sc/source/filter/excel/excdoc.cxx index 9cf433d50c78..87b17aa871e4 100644 --- a/sc/source/filter/excel/excdoc.cxx +++ b/sc/source/filter/excel/excdoc.cxx @@ -550,7 +550,8 @@ void ExcTable::FillAsXmlTable( SCTAB nCodeNameIdx ) Add( new ExcBof8 ); - Add( new XclExpWsbool( bFitToPages, mnScTab, &GetFilterManager() ) ); + Color aTabColor = GetRoot().GetDoc().GetTabBgColor(mnScTab); + Add(new XclExpXmlSheetPr(bFitToPages, mnScTab, aTabColor, &GetFilterManager())); // GUTS (count & size of outline icons) aRecList.AppendRecord( mxCellTable->CreateRecord( EXC_ID_GUTS ) ); diff --git a/sc/source/filter/excel/excrecds.cxx b/sc/source/filter/excel/excrecds.cxx index 9be9bfe530fc..614a70a82368 100644 --- a/sc/source/filter/excel/excrecds.cxx +++ b/sc/source/filter/excel/excrecds.cxx @@ -442,16 +442,17 @@ void XclExpCountry::WriteBody( XclExpStream& rStrm ) // XclExpWsbool =============================================================== -XclExpWsbool::XclExpWsbool( bool bFitToPages, SCTAB nScTab, XclExpFilterManager* pManager ) +XclExpWsbool::XclExpWsbool( bool bFitToPages ) : XclExpUInt16Record( EXC_ID_WSBOOL, EXC_WSBOOL_DEFAULTFLAGS ) - , mnScTab( nScTab ) - , mpManager( pManager ) { if( bFitToPages ) SetValue( GetValue() | EXC_WSBOOL_FITTOPAGE ); } -void XclExpWsbool::SaveXml( XclExpXmlStream& rStrm ) +XclExpXmlSheetPr::XclExpXmlSheetPr( bool bFitToPages, SCTAB nScTab, const Color& rTabColor, XclExpFilterManager* pManager ) : + mnScTab(nScTab), mpManager(pManager), mbFitToPage(bFitToPages), maTabColor(rTabColor) {} + +void XclExpXmlSheetPr::SaveXml( XclExpXmlStream& rStrm ) { sax_fastparser::FSHelperPtr& rWorksheet = rStrm.GetCurrentStream(); rWorksheet->startElement( XML_sheetPr, @@ -465,11 +466,18 @@ void XclExpWsbool::SaveXml( XclExpXmlStream& rStrm ) XML_filterMode, mpManager ? XclXmlUtils::ToPsz( mpManager->HasFilterMode( mnScTab ) ) : NULL, // OOXTODO: XML_enableFormatConditionsCalculation, FSEND ); - // OOXTODO: elements XML_tabColor, XML_outlinePr - rWorksheet->singleElement( XML_pageSetUpPr, + + // Note : the order of child elements is significant. Don't change the order. + + // OOXTODO: XML_outlinePr + + rWorksheet->singleElement( + XML_tabColor, XML_rgb, XclXmlUtils::ToOString(maTabColor).getStr(), FSEND); + + rWorksheet->singleElement(XML_pageSetUpPr, // OOXTODO: XML_autoPageBreaks, - XML_fitToPage, XclXmlUtils::ToPsz( GetValue() & EXC_WSBOOL_FITTOPAGE ), - FSEND ); + XML_fitToPage, XclXmlUtils::ToPsz(mbFitToPage), FSEND); + rWorksheet->endElement( XML_sheetPr ); } diff --git a/sc/source/filter/inc/excrecds.hxx b/sc/source/filter/inc/excrecds.hxx index 0a6b7be537a7..b4a3ba900b5c 100644 --- a/sc/source/filter/inc/excrecds.hxx +++ b/sc/source/filter/inc/excrecds.hxx @@ -24,6 +24,7 @@ #include <rtl/ustring.hxx> #include <svl/zforlist.hxx> #include <tools/solar.h> +#include <tools/color.hxx> #include <vcl/vclenum.hxx> @@ -325,16 +326,26 @@ private: class XclExpWsbool : public XclExpUInt16Record { public: - explicit XclExpWsbool( bool bFitToPages, SCTAB nScTab = -1, XclExpFilterManager* pManager = NULL ); - - virtual void SaveXml( XclExpXmlStream& rStrm ); -private: - SCTAB mnScTab; - XclExpFilterManager* mpManager; + explicit XclExpWsbool( bool bFitToPages ); }; +/** + * Save sheetPr element and its children for xlsx export. + */ +class XclExpXmlSheetPr : public XclExpRecordBase +{ +public: + explicit XclExpXmlSheetPr( + bool bFitToPages, SCTAB nScTab, const Color& rTabColor, XclExpFilterManager* pManager ); + + virtual void SaveXml( XclExpXmlStream& rStrm ); -// ============================================================================ +private: + SCTAB mnScTab; + XclExpFilterManager* mpManager; + bool mbFitToPage; + Color maTabColor; +}; class XclExpFiltermode : public XclExpEmptyRecord { |