sc/source/filter/excel/excdoc.cxx | 3 ++- sc/source/filter/excel/excrecds.cxx | 24 ++++++++++++++++-------- sc/source/filter/inc/excrecds.hxx | 25 ++++++++++++++++++------- 3 files changed, 36 insertions(+), 16 deletions(-)
New commits: commit 00b7d4c8043a0c6b9e267f0fd5d7389128628ca0 Author: Kohei Yoshida <kohei.yosh...@collabora.com> Date: Thu Mar 13 21:49:04 2014 -0400 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.mohrh...@googlemail.com> Reviewed-by: Markus Mohrhard <markus.mohrh...@googlemail.com> diff --git a/sc/source/filter/excel/excdoc.cxx b/sc/source/filter/excel/excdoc.cxx index 9cf433d..87b17aa 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 9be9bfe..614a70a 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 0a6b7be..b4a3ba9 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 { _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits