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 )
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 ) );
......
......@@ -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) != 0 ),
FSEND );
XML_fitToPage, XclXmlUtils::ToPsz(mbFitToPage), FSEND);
rWorksheet->endElement( XML_sheetPr );
}
......
......@@ -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,15 +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
......
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