Compare commits

..

1 Commits

Author SHA1 Message Date
8c8f59da80 [x2t] Add outlinePr to Editor.bin 2019-08-02 14:51:45 +03:00
7 changed files with 140 additions and 4 deletions

View File

@ -1186,6 +1186,7 @@ namespace OOX
et_x_ConditionalFormatValueObject,
et_x_ConditionalFormatIconSet,
et_x_PageSetUpPr,
et_x_OutlinePr,
et_x_SheetPr,
et_x_Pane,
et_x_ExternalBook,

View File

@ -750,6 +750,62 @@ namespace OOX
nullable<SimpleTypes::COnOff<>> m_oAutoPageBreaks;
nullable<SimpleTypes::COnOff<>> m_oFitToPage;
};
class COutlinePr : public WritingElement
{
public:
WritingElement_AdditionConstructors(COutlinePr)
COutlinePr()
{
}
virtual ~COutlinePr()
{
}
virtual void fromXML(XmlUtils::CXmlNode& node)
{
}
virtual std::wstring toXML() const
{
return _T("");
}
virtual void toXML(NSStringUtils::CStringBuilder& writer) const
{
writer.WriteString(_T("<outlinePr"));
WritingStringNullableAttrBool(L"applyStyles", m_oApplyStyles);
WritingStringNullableAttrBool(L"showOutlineSymbols", m_oShowOutlineSymbols);
WritingStringNullableAttrBool(L"summaryBelow", m_oSummaryBelow);
WritingStringNullableAttrBool(L"summaryRight", m_oSummaryRight);
writer.WriteString(_T("/>"));
}
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
ReadAttributes( oReader );
if ( !oReader.IsEmptyNode() )
oReader.ReadTillEnd();
}
virtual EElementType getType () const
{
return et_x_OutlinePr;
}
private:
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
// Читаем атрибуты
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, _T("applyStyles"), m_oApplyStyles )
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("showOutlineSymbols"), m_oShowOutlineSymbols )
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("summaryBelow"), m_oSummaryBelow )
WritingElement_ReadAttributes_Read_else_if ( oReader, _T("summaryRight"), m_oSummaryRight )
WritingElement_ReadAttributes_End( oReader )
}
public:
nullable<SimpleTypes::COnOff<>> m_oApplyStyles;
nullable<SimpleTypes::COnOff<>> m_oShowOutlineSymbols;
nullable<SimpleTypes::COnOff<>> m_oSummaryBelow;
nullable<SimpleTypes::COnOff<>> m_oSummaryRight;
};
class CSheetPr : public WritingElement
{
public:
@ -788,6 +844,10 @@ namespace OOX
{
m_oPageSetUpPr->toXML(writer);
}
if (m_oOutlinePr.IsInit())
{
m_oOutlinePr->toXML(writer);
}
writer.WriteString(_T("</sheetPr>"));
}
@ -805,10 +865,10 @@ namespace OOX
if ( _T("tabColor") == sName )
m_oTabColor = oReader;
if ( _T("pageSetUpPr") == sName )
else if ( _T("pageSetUpPr") == sName )
m_oPageSetUpPr = oReader;
//необработано:
//<outlinePr>
else if ( _T("outlinePr") == sName )
m_oOutlinePr = oReader;
}
}
virtual EElementType getType () const
@ -836,6 +896,7 @@ namespace OOX
public:
nullable<CColor> m_oTabColor;
nullable<CPageSetUpPr> m_oPageSetUpPr;
nullable<COutlinePr> m_oOutlinePr;
nullable<std::wstring> m_oCodeName;
nullable<SimpleTypes::COnOff<>> m_oEnableFormatConditionsCalculation;

View File

@ -1128,7 +1128,12 @@ namespace BinXlsxRW
TabColor = 9,
PageSetUpPr = 10,
AutoPageBreaks = 11,
FitToPage = 12
FitToPage = 12,
OutlinePr = 13,
ApplyStyles = 14,
ShowOutlineSymbols = 15,
SummaryBelow = 16,
SummaryRight = 17
};}
namespace c_oSer_Sparkline{enum c_oSer_Sparkline

View File

@ -5535,6 +5535,40 @@ void BinaryWorksheetTableWriter::WriteSheetPr(const OOX::Spreadsheet::CSheetPr&
WritePageSetUpPr(oSheetPr.m_oPageSetUpPr.get());
m_oBcw.WriteItemEnd(nCurPos);
}
if (oSheetPr.m_oOutlinePr.IsInit())
{
nCurPos = m_oBcw.WriteItemStart(c_oSer_SheetPr::OutlinePr);
WriteOutlinePr(oSheetPr.m_oOutlinePr.get());
m_oBcw.WriteItemEnd(nCurPos);
}
}
void BinaryWorksheetTableWriter::WriteOutlinePr(const OOX::Spreadsheet::COutlinePr& oOutlinePr)
{
int nCurPos = 0;
if (oOutlinePr.m_oApplyStyles.IsInit())
{
nCurPos = m_oBcw.WriteItemStart(c_oSer_SheetPr::ApplyStyles);
m_oBcw.m_oStream.WriteBOOL(oOutlinePr.m_oApplyStyles->ToBool());
m_oBcw.WriteItemEnd(nCurPos);
}
if (oOutlinePr.m_oShowOutlineSymbols.IsInit())
{
nCurPos = m_oBcw.WriteItemStart(c_oSer_SheetPr::ShowOutlineSymbols);
m_oBcw.m_oStream.WriteBOOL(oOutlinePr.m_oShowOutlineSymbols->ToBool());
m_oBcw.WriteItemEnd(nCurPos);
}
if (oOutlinePr.m_oSummaryBelow.IsInit())
{
nCurPos = m_oBcw.WriteItemStart(c_oSer_SheetPr::SummaryBelow);
m_oBcw.m_oStream.WriteBOOL(oOutlinePr.m_oSummaryBelow->ToBool());
m_oBcw.WriteItemEnd(nCurPos);
}
if (oOutlinePr.m_oSummaryRight.IsInit())
{
nCurPos = m_oBcw.WriteItemStart(c_oSer_SheetPr::SummaryRight);
m_oBcw.m_oStream.WriteBOOL(oOutlinePr.m_oSummaryRight->ToBool());
m_oBcw.WriteItemEnd(nCurPos);
}
}
void BinaryWorksheetTableWriter::WritePageSetUpPr(const OOX::Spreadsheet::CPageSetUpPr& oPageSetUpPr)
{

View File

@ -252,6 +252,7 @@ namespace BinXlsxRW
void WriteThreadedCommentMention(OOX::Spreadsheet::CThreadedCommentMention& oMention);
void WriteSheetPr(const OOX::Spreadsheet::CSheetPr& oSheetPr);
void WritePageSetUpPr(const OOX::Spreadsheet::CPageSetUpPr& oPageSetUpPr);
void WriteOutlinePr(const OOX::Spreadsheet::COutlinePr& oOutlinePr);
void WritemHeaderFooter(const OOX::Spreadsheet::CHeaderFooter& oHeaderFooter);
void WritemRowColBreaks(const OOX::Spreadsheet::CRowColBreaks& oRowColBreaks);
void WritemBreak(const OOX::Spreadsheet::CBreak& oBreak);

View File

@ -4222,6 +4222,39 @@ int BinaryWorksheetsTableReader::ReadSheetPr(BYTE type, long length, void* poRes
pSheetPr->m_oPageSetUpPr.Init();
READ1_DEF(length, res, this->ReadPageSetUpPr, pSheetPr->m_oPageSetUpPr.GetPointer());
}
else if(c_oSer_SheetPr::OutlinePr == type)
{
pSheetPr->m_oOutlinePr.Init();
READ1_DEF(length, res, this->ReadOutlinePr, pSheetPr->m_oOutlinePr.GetPointer());
}
else
res = c_oSerConstants::ReadUnknown;
return res;
}
int BinaryWorksheetsTableReader::ReadOutlinePr(BYTE type, long length, void* poResult)
{
OOX::Spreadsheet::COutlinePr* pOutlinePr = static_cast<OOX::Spreadsheet::COutlinePr*>(poResult);
int res = c_oSerConstants::ReadOk;
if(c_oSer_SheetPr::ApplyStyles == type)
{
pOutlinePr->m_oApplyStyles.Init();
pOutlinePr->m_oApplyStyles->FromBool(m_oBufferedStream.GetBool());
}
else if(c_oSer_SheetPr::ShowOutlineSymbols == type)
{
pOutlinePr->m_oShowOutlineSymbols.Init();
pOutlinePr->m_oShowOutlineSymbols->FromBool(m_oBufferedStream.GetBool());
}
else if(c_oSer_SheetPr::SummaryBelow == type)
{
pOutlinePr->m_oSummaryBelow.Init();
pOutlinePr->m_oSummaryBelow->FromBool(m_oBufferedStream.GetBool());
}
else if(c_oSer_SheetPr::SummaryRight == type)
{
pOutlinePr->m_oSummaryRight.Init();
pOutlinePr->m_oSummaryRight->FromBool(m_oBufferedStream.GetBool());
}
else
res = c_oSerConstants::ReadUnknown;
return res;

View File

@ -293,6 +293,7 @@ namespace BinXlsxRW
int ReadPane(BYTE type, long length, void* poResult);
int ReadSelection(BYTE type, long length, void* poResult);
int ReadSheetPr(BYTE type, long length, void* poResult);
int ReadOutlinePr(BYTE type, long length, void* poResult);
int ReadPageSetUpPr(BYTE type, long length, void* poResult);
int ReadColor(BYTE type, long length, void* poResult);
int ReadSheetFormatPr(BYTE type, long length, void* poResult);