added extension list conversion

This commit is contained in:
RIMINMIR
2023-07-12 18:08:02 +06:00
parent e2932091e8
commit bc7bbb94aa
6 changed files with 132 additions and 9 deletions

View File

@ -129,7 +129,7 @@ namespace OOX
sResult += L" relId=\"" + m_oRelId->ToString() + L"\"";
}
sResult += L" minVer=\"http://schemas.openxmlformats.org/drawingml/2006/diagram\"/>";
return sResult;
}
EElementType CDataModelExt::getType() const
@ -214,9 +214,9 @@ namespace OOX
*m_sUri == L"{46F421CA-312F-682f-3DD2-61675219B42D}" ||
*m_sUri == L"{DE250136-89BD-433C-8126-D09CA5730AF9}" ||
*m_sUri == L"{19B8F6BF-5375-455C-9EA6-DF929625EA0E}" ||
*m_sUri == L"{725AE2AE-9491-48be-B2B4-4EB974FC3084}" ||
*m_sUri == L"{725AE2AE-9491-48be-B2B4-4EB974FC3084}" ||
*m_sUri == L"{231B7EB2-2AFC-4442-B178-5FFDF5851E7C}" ||
*m_sUri == L"http://schemas.microsoft.com/office/drawing/2008/diagram"))
*m_sUri == L"http://schemas.microsoft.com/office/drawing/2008/diagram"))
{
int nCurDepth = oReader.GetDepth();
while (oReader.ReadNextSiblingNode(nCurDepth))
@ -491,7 +491,7 @@ namespace OOX
NSStringUtils::CStringBuilder writer;
writer.StartNode(L"externalReference");
writer.StartAttributes();
if (m_oFileKey.IsInit()) writer.WriteAttribute(L"fileKey", *m_oFileKey);
if (m_oInstanceId.IsInit()) writer.WriteAttribute(L"instanceId", *m_oInstanceId);
@ -585,7 +585,7 @@ namespace OOX
}
pWriter->WriteNodeEnd(ns + L"extLst");
}
}
std::wstring COfficeArtExtensionList::toXML() const
{
return toXMLWithNS(L"a:");
@ -606,6 +606,38 @@ namespace OOX
return sResult;
}
XLS::BaseObjectPtr COfficeArtExtensionList::toBinWorksheet()
{
auto ptr(new XLSB::FRTWORKSHEET);
XLS::BaseObjectPtr objectPtr(ptr);
if(m_arrExt.empty())
return objectPtr;
for(auto i:m_arrExt)
{
if(i->m_sUri == L"{78C0D931-6437-407d-A8EE-F0AAD7539E65}")
{
auto formatPtr(new XLSB::CONDITIONALFORMATTINGS);
ptr->m_CONDITIONALFORMATTINGS = XLS::BaseObjectPtr{formatPtr};
for(auto j:i->m_arrConditionalFormatting)
{
formatPtr->m_arCONDITIONALFORMATTING14.push_back(j->toBin());
}
}
else if(i->m_sUri == L"{CCE6A557-97BC-4B89-ADB6-D9C93CAAB3DF}")
{
ptr->m_DVALS14 = i->m_oDataValidations->toBin();
}
else if(i->m_sUri == L"{05C60535-1F16-4fd2-B633-F4F36F0B64E0}")
{
ptr->m_SPARKLINEGROUPS = i->m_oSparklineGroups->toBin();
}
else if(i->m_sUri == L"{A8765BA9-456A-4dab-B4F3-ACF838C121DE}")
{
ptr->m_SLICERSEX = i->m_oSlicerList->toBin();
}
}
return objectPtr;
}
void COfficeArtExtensionList::fromBin(XLS::BaseObjectPtr& obj)
{
if (obj->get_type() == XLS::typeFRTWORKBOOK)

View File

@ -105,7 +105,7 @@ namespace OOX
//--------------------------------------------------------------------------------
// COfficeArtExtension 20.1.2.2.14 (Part 1)
//--------------------------------------------------------------------------------
//--------------------------------------------------------------------------------
class COfficeArtExtension : public WritingElement
{
@ -150,7 +150,7 @@ namespace OOX
std::vector<OOX::Spreadsheet::CSlicerCachePivotTable*> m_oSlicerCachePivotTables;
nullable<OOX::Spreadsheet::CTableSlicerCache> m_oTableSlicerCache;
nullable<OOX::Spreadsheet::CSlicerCacheHideNoData> m_oSlicerCacheHideItemsWithNoData;
std::vector<OOX::Spreadsheet::CConditionalFormatting*> m_arrConditionalFormatting;
nullable<OOX::CPresenceInfo> m_oPresenceInfo;
@ -167,7 +167,7 @@ namespace OOX
//--------------------------------------------------------------------------------
// COfficeArtExtensionList 20.1.2.2.15 (Part 1)
//--------------------------------------------------------------------------------
//--------------------------------------------------------------------------------
class COfficeArtExtensionList : public WritingElement
{
@ -185,6 +185,7 @@ namespace OOX
virtual std::wstring toXML() const;
std::wstring toXMLWithNS(const std::wstring& sNamespace) const;
void fromBin(XLS::BaseObjectPtr& obj);
XLS::BaseObjectPtr toBinWorksheet();
virtual EElementType getType() const;
std::vector<OOX::Drawing::COfficeArtExtension*> m_arrExt;

View File

@ -540,6 +540,15 @@ void CSlicerCache::fromPPTY(NSBinPptxRW::CBinaryFileReader* pReader)
{
pReader->SkipRecord();
}
XLS::BaseObjectPtr CSlicerRef::toBin()
{
auto ptr(new XLSB::SLICEREX);
XLS::BaseObjectPtr objectPtr(ptr);
auto ptr1(new XLSB::BeginSlicerEx);
ptr1->FRTheader.relID.relId = m_oRId->GetValue();
return objectPtr;
}
void CSlicerRef::fromBin(XLS::BaseObjectPtr &obj)
{
ReadAttributes(obj);
@ -557,7 +566,6 @@ void CSlicerRef::ReadAttributes(XLS::BaseObjectPtr &obj)
if(!ptr1->FRTheader.relID.relId.value().empty())
m_oRId = ptr1->FRTheader.relID.relId.value();
}
}
}
else if(obj->get_type() == XLS::typeTABLESLICEREX)
@ -778,6 +786,17 @@ void CSlicerCaches::toXML(NSStringUtils::CStringBuilder& writer, const std::wstr
}
writer.EndNode(sPrefix + sName);
}
XLS::BaseObjectPtr CSlicerRefs::toBin()
{
auto ptr(new XLSB::SLICERSEX);
XLS::BaseObjectPtr objectPtr(ptr);
for(auto i:m_oSlicer)
{
ptr->m_arSLICEREX.push_back(i.toBin());
}
return objectPtr;
}
void CSlicerRefs::fromBin(XLS::BaseObjectPtr &obj)
{
if(obj->get_type() == XLS::typeSLICERSEX)

View File

@ -206,6 +206,7 @@ namespace OOX
virtual void toXML(NSStringUtils::CStringBuilder& writer, const std::wstring& sName) const;
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader);
void fromBin(XLS::BaseObjectPtr& obj);
XLS::BaseObjectPtr toBin();
void ReadAttributes(XLS::BaseObjectPtr& obj);
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader);
virtual void toPPTY(NSBinPptxRW::CBinaryFileWriter* pWriter) const;
@ -280,6 +281,7 @@ namespace OOX
virtual void toXML(NSStringUtils::CStringBuilder& writer, const std::wstring& sName) const;
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader);
void fromBin(XLS::BaseObjectPtr& obj);
XLS::BaseObjectPtr toBin();
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader);
virtual EElementType getType() const
{

View File

@ -393,6 +393,65 @@ namespace OOX
m_oSparklines = obj;
}
}
XLS::BaseObjectPtr CSparklineGroup::toBin()
{
auto ptr1(new XLSB::SPARKLINEGROUP);
XLS::BaseObjectPtr objectPtr(ptr1);
auto ptr(new XLSB::BeginSparklineGroup);
ptr1->m_BrtBeginSparklineGroup = XLS::BaseObjectPtr{ptr};
ptr->dManualMax.data.value = m_oManualMax->GetValue();
ptr->dManualMin.data.value = m_oManualMin->GetValue();
ptr->dLineWeight.data.value = m_oLineWeight->GetValue();
ptr->isltype = static_cast<decltype(ptr->isltype)>(m_oType->GetValue());
ptr->fDateAxis = m_oDateAxis->GetValue();
ptr->fShowEmptyCellAsZero = (m_oDisplayEmptyCellsAs == OOX::Spreadsheet::ST_DispBlanksAs::st_dispblanksasZERO) ? 0x01 : 0x00;
ptr->fMarkers = m_oMarkers->GetValue();
ptr->fHigh = m_oHigh->GetValue();
ptr->fLow = m_oLow->GetValue();
ptr->fFirst = m_oFirst->GetValue();
ptr->fLast = m_oLast->GetValue();
ptr->fNegative = m_oNegative->GetValue();
ptr->fAxis = m_oDisplayXAxis->GetValue();
ptr->fDisplayHidden = m_oDisplayHidden->GetValue();
ptr->fRTL = m_oRightToLeft->GetValue();
if(m_oMaxAxisType == SimpleTypes::Spreadsheet::ESparklineAxisMinMax::Individual)
ptr->fIndividualAutoMax = true;
if(m_oColorSeries.IsInit())
ptr->brtcolorSeries = m_oColorSeries->toColor();
if(m_oColorNegative.IsInit())
ptr->brtcolorNegative = m_oColorNegative->toColor();
if(m_oColorAxis.IsInit())
ptr->brtcolorAxis = m_oColorAxis->toColor();
if(m_oColorMarkers.IsInit())
ptr->brtcolorMarkers = m_oColorMarkers->toColor();
if(m_oColorFirst.IsInit())
ptr->brtcolorFirst = m_oColorFirst->toColor();
if(m_oColorLast.IsInit())
ptr->brtcolorLast = m_oColorLast->toColor();
if(m_oColorHigh.IsInit())
ptr->brtcolorHigh = m_oColorHigh->toColor();
if(m_oColorLow.IsInit())
ptr->brtcolorLow = m_oColorLow->toColor();
if(ptr->FRTheader.rgFormulas.array.size() > 0)
{
ptr->FRTheader.rgFormulas.array[0].formula = m_oRef.get();
}
return objectPtr;
}
EElementType CSparklineGroup::getType () const
{
return et_x_SparklineGroup;
@ -556,6 +615,14 @@ namespace OOX
m_arrItems.push_back(new CSparklineGroup(sparklineGroup));
}
}
XLS::BaseObjectPtr CSparklineGroups::toBin()
{
auto ptr(new XLSB::SPARKLINEGROUPS);
XLS::BaseObjectPtr objectPtr(ptr);
for(auto i:m_arrItems)
ptr->m_arSPARKLINEGROUP.push_back(i->toBin());
return objectPtr;
}
EElementType CSparklineGroups::getType () const
{
return et_x_SparklineGroups;

View File

@ -109,6 +109,7 @@ namespace OOX
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader);
void fromBin(XLS::BaseObjectPtr& obj);
XLS::BaseObjectPtr toBin();
virtual EElementType getType () const;
private:
@ -163,6 +164,7 @@ namespace OOX
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader);
void fromBin(XLS::BaseObjectPtr& obj);
XLS::BaseObjectPtr toBin();
virtual EElementType getType () const;
private: