Kaydet (Commit) 5063f31c authored tarafından Kohei Yoshida's avatar Kohei Yoshida

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...

Change-Id: Ia585f53d547af3d6840fce1b1244b60bb5076b07
üst 12ae7672
...@@ -550,7 +550,8 @@ void ExcTable::FillAsXmlTable( SCTAB nCodeNameIdx ) ...@@ -550,7 +550,8 @@ void ExcTable::FillAsXmlTable( SCTAB nCodeNameIdx )
Add( new ExcBof8 ); 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) // GUTS (count & size of outline icons)
aRecList.AppendRecord( mxCellTable->CreateRecord( EXC_ID_GUTS ) ); aRecList.AppendRecord( mxCellTable->CreateRecord( EXC_ID_GUTS ) );
......
...@@ -442,16 +442,17 @@ void XclExpCountry::WriteBody( XclExpStream& rStrm ) ...@@ -442,16 +442,17 @@ void XclExpCountry::WriteBody( XclExpStream& rStrm )
// XclExpWsbool =============================================================== // XclExpWsbool ===============================================================
XclExpWsbool::XclExpWsbool( bool bFitToPages, SCTAB nScTab, XclExpFilterManager* pManager ) XclExpWsbool::XclExpWsbool( bool bFitToPages )
: XclExpUInt16Record( EXC_ID_WSBOOL, EXC_WSBOOL_DEFAULTFLAGS ) : XclExpUInt16Record( EXC_ID_WSBOOL, EXC_WSBOOL_DEFAULTFLAGS )
, mnScTab( nScTab )
, mpManager( pManager )
{ {
if( bFitToPages ) if( bFitToPages )
SetValue( GetValue() | EXC_WSBOOL_FITTOPAGE ); 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(); sax_fastparser::FSHelperPtr& rWorksheet = rStrm.GetCurrentStream();
rWorksheet->startElement( XML_sheetPr, rWorksheet->startElement( XML_sheetPr,
...@@ -465,11 +466,18 @@ void XclExpWsbool::SaveXml( XclExpXmlStream& rStrm ) ...@@ -465,11 +466,18 @@ void XclExpWsbool::SaveXml( XclExpXmlStream& rStrm )
XML_filterMode, mpManager ? XclXmlUtils::ToPsz( mpManager->HasFilterMode( mnScTab ) ) : NULL, XML_filterMode, mpManager ? XclXmlUtils::ToPsz( mpManager->HasFilterMode( mnScTab ) ) : NULL,
// OOXTODO: XML_enableFormatConditionsCalculation, // OOXTODO: XML_enableFormatConditionsCalculation,
FSEND ); 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, // OOXTODO: XML_autoPageBreaks,
XML_fitToPage, XclXmlUtils::ToPsz( (GetValue() & EXC_WSBOOL_FITTOPAGE) != 0 ), XML_fitToPage, XclXmlUtils::ToPsz(mbFitToPage), FSEND);
FSEND );
rWorksheet->endElement( XML_sheetPr ); rWorksheet->endElement( XML_sheetPr );
} }
......
...@@ -24,6 +24,7 @@ ...@@ -24,6 +24,7 @@
#include <rtl/ustring.hxx> #include <rtl/ustring.hxx>
#include <svl/zforlist.hxx> #include <svl/zforlist.hxx>
#include <tools/solar.h> #include <tools/solar.h>
#include <tools/color.hxx>
#include <vcl/vclenum.hxx> #include <vcl/vclenum.hxx>
...@@ -325,17 +326,28 @@ private: ...@@ -325,17 +326,28 @@ private:
class XclExpWsbool : public XclExpUInt16Record class XclExpWsbool : public XclExpUInt16Record
{ {
public: public:
explicit XclExpWsbool( bool bFitToPages, SCTAB nScTab = -1, XclExpFilterManager* pManager = NULL ); 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 ); virtual void SaveXml( XclExpXmlStream& rStrm );
private: private:
SCTAB mnScTab; SCTAB mnScTab;
XclExpFilterManager* mpManager; XclExpFilterManager* mpManager;
bool mbFitToPage;
Color maTabColor;
}; };
class XclExpFiltermode : public XclExpEmptyRecord class XclExpFiltermode : public XclExpEmptyRecord
{ {
public: public:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment