diff --git a/OOXML/XlsxFormat/Slicer/SlicerCacheExt.cpp b/OOXML/XlsxFormat/Slicer/SlicerCacheExt.cpp index 310e7808e6..b2f746a343 100644 --- a/OOXML/XlsxFormat/Slicer/SlicerCacheExt.cpp +++ b/OOXML/XlsxFormat/Slicer/SlicerCacheExt.cpp @@ -652,6 +652,10 @@ XLS::BaseObjectPtr CSlicerRef::toBin() XLS::BaseObjectPtr objectPtr(ptr); auto ptr1(new XLSB::BeginSlicerEx); ptr1->FRTheader.relID.relId = m_oRId->GetValue(); + ptr1->FRTheader.fRelID = true; + ptr1->FRTheader.fRef = false; + ptr1->FRTheader.fSqref = false; + ptr1->FRTheader.fFormula = false; ptr->m_BrtBeginSlicerEx = XLS::BaseObjectPtr{ptr1}; return objectPtr; @@ -662,6 +666,10 @@ XLS::BaseObjectPtr CSlicerRef::toBinTable() XLS::BaseObjectPtr objectPtr(ptr); auto ptr1(new XLSB::BeginSlicerEx); ptr1->FRTheader.relID.relId = m_oRId->GetValue(); + ptr1->FRTheader.fRelID = true; + ptr1->FRTheader.fRef = false; + ptr1->FRTheader.fSqref = false; + ptr1->FRTheader.fFormula = false; ptr->m_BrtBeginSlicerEx = XLS::BaseObjectPtr{ptr1}; return objectPtr; diff --git a/OOXML/XlsxFormat/Styles/rPr.cpp b/OOXML/XlsxFormat/Styles/rPr.cpp index 9a73cea573..b9e04101e5 100644 --- a/OOXML/XlsxFormat/Styles/rPr.cpp +++ b/OOXML/XlsxFormat/Styles/rPr.cpp @@ -473,6 +473,7 @@ namespace OOX ptr.bGreen = 0; ptr.bRed = 0; ptr.fValidRGB = false; + ptr.index = 0; if(m_oAuto.IsInit()) { @@ -517,9 +518,10 @@ namespace OOX XLS::BaseObjectPtr objectPtr(ptr); ptr->bAlpha = 0; - ptr->bAlpha = 0; - ptr->bAlpha = 0; - ptr->bAlpha = 0; + ptr->bRed = 0; + ptr->bGreen = 0; + ptr->bBlue = 0; + ptr->index = 0; ptr->fValidRGB = false; if(m_oAuto.IsInit()) diff --git a/OOXML/XlsxFormat/Worksheets/ConditionalFormatting.cpp b/OOXML/XlsxFormat/Worksheets/ConditionalFormatting.cpp index 48d907dfda..d8cf54c8c4 100644 --- a/OOXML/XlsxFormat/Worksheets/ConditionalFormatting.cpp +++ b/OOXML/XlsxFormat/Worksheets/ConditionalFormatting.cpp @@ -47,6 +47,7 @@ #include "../../XlsbFormat/Biff12_records/BeginConditionalFormatting.h" #include "../../XlsbFormat/Biff12_records/BeginConditionalFormatting14.h" +#include "../../XlsbFormat/Biff12_records/FRTBegin.h" #include "../../XlsbFormat/Biff12_records/BeginCFRule.h" #include "../../XlsbFormat/Biff12_records/BeginCFRule14.h" #include "../../XlsbFormat/Biff12_records/BeginDatabar.h" @@ -1823,6 +1824,10 @@ XLS::BaseObjectPtr CConditionalFormattingRule::toBin(const XLS::CellRef &cellRe ptr->m_FRTCFRULE = XLS::BaseObjectPtr{extPtr}; beginExt->guid = m_oExtId.get(); + auto ruleBegin(new XLSB::FRTBegin); + ruleBegin->productVersion.product = 0; + ruleBegin->productVersion.version = 0; + extPtr->m_BrtFRTBegin = XLS::BaseObjectPtr{ruleBegin}; } return objPtr; } @@ -1841,6 +1846,8 @@ XLS::BaseObjectPtr CConditionalFormattingRule::WriteAttributes(const XLS::CellR ptr->dxfId = 0; if(m_oPriority.IsInit()) ptr->iPri = m_oPriority->GetValue(); + else + ptr->iPri = 1; if(m_oStopIfTrue.IsInit()) ptr->fStopTrue = m_oStopIfTrue->GetValue(); else diff --git a/OOXML/XlsxFormat/Worksheets/SheetData.cpp b/OOXML/XlsxFormat/Worksheets/SheetData.cpp index b808b46cb7..18bb2d3a59 100644 --- a/OOXML/XlsxFormat/Worksheets/SheetData.cpp +++ b/OOXML/XlsxFormat/Worksheets/SheetData.cpp @@ -1998,7 +1998,10 @@ namespace OOX else { auto pCellRk = new(XLSB::FmlaNum); - + if(m_oFormula->m_oAca.IsInit()) + pCellRk->grbitFlags.fAlwaysCalc = m_oFormula->m_oAca->GetValue(); + else + pCellRk->grbitFlags.fAlwaysCalc = false; pCellRk->value.data.value = intCache; oCell = &pCellRk->cell; pSource = pCellRk; @@ -2025,6 +2028,10 @@ namespace OOX pCellRk->value.data.value = realCache; oCell = &pCellRk->cell; pSource = pCellRk; + if(m_oFormula->m_oAca.IsInit()) + pCellRk->grbitFlags.fAlwaysCalc = m_oFormula->m_oAca->GetValue(); + else + pCellRk->grbitFlags.fAlwaysCalc = false; } } } @@ -2225,6 +2232,10 @@ namespace OOX str->value = L""; oCell = &str->cell; pSource = str; + if(m_oFormula->m_oAca.IsInit()) + str->grbitFlags.fAlwaysCalc = m_oFormula->m_oAca->GetValue(); + else + str->grbitFlags.fAlwaysCalc = false; } else @@ -2247,7 +2258,10 @@ namespace OOX if(m_oValue.IsInit()) str->value = m_oValue->m_sText; oCell = &str->cell; - + if(m_oFormula->m_oAca.IsInit()) + str->grbitFlags.fAlwaysCalc = m_oFormula->m_oAca->GetValue(); + else + str->grbitFlags.fAlwaysCalc = false; pSource = str; } @@ -2268,7 +2282,10 @@ namespace OOX if(m_oValue.IsInit()) str->value = m_oRichText->ToString(); oCell = &str->cell; - + if(m_oFormula->m_oAca.IsInit()) + str->grbitFlags.fAlwaysCalc = m_oFormula->m_oAca->GetValue(); + else + str->grbitFlags.fAlwaysCalc = false; pSource = str; } @@ -2285,6 +2302,10 @@ namespace OOX auto str(new XLSB::FmlaString); str->value = L""; oCell = &str->cell; + if(m_oFormula->m_oAca.IsInit()) + str->grbitFlags.fAlwaysCalc = m_oFormula->m_oAca->GetValue(); + else + str->grbitFlags.fAlwaysCalc = false; pSource = str; } else @@ -3088,6 +3109,7 @@ namespace OOX if(m_oThickTop.IsInit()) hdrPtr->fExAsc = m_oThickTop->GetValue(); + hdrPtr->ccolspan = 0; } //if(m_oDyDescent.IsInit()) diff --git a/OOXML/XlsxFormat/Worksheets/Sparkline.cpp b/OOXML/XlsxFormat/Worksheets/Sparkline.cpp index d407a3461f..aa3bb6433b 100644 --- a/OOXML/XlsxFormat/Worksheets/Sparkline.cpp +++ b/OOXML/XlsxFormat/Worksheets/Sparkline.cpp @@ -39,6 +39,7 @@ #include "../../XlsbFormat/Biff12_unions/SPARKLINEGROUP.h" #include "../../XlsbFormat/Biff12_records/BeginSparklineGroup.h" #include "../../XlsbFormat/Biff12_records/Sparkline.h" +#include "../../XlsbFormat/Biff12_records/FRTBegin.h" namespace OOX { @@ -111,6 +112,10 @@ namespace OOX if(m_oSqRef.IsInit()) { XLSB::FRTSqref sqref; + sqref.fAdjDelete = false; + sqref.fDoAdjust = false; + sqref.fAdjChange = false; + sqref.fEdit = false; sqref.sqrfx.strValue = m_oSqRef.get(); ptr->FRTheader.rgSqrefs.array.push_back(sqref); ptr->FRTheader.fSqref = true; @@ -773,6 +778,10 @@ namespace OOX { auto ptr(new XLSB::SPARKLINEGROUPS); XLS::BaseObjectPtr objectPtr(ptr); + auto sparklineVersion(new XLSB::FRTBegin); + sparklineVersion->productVersion.product = 0; + sparklineVersion->productVersion.version = 0; + ptr->m_BrtFRTBegin = XLS::BaseObjectPtr{sparklineVersion}; for(auto i:m_arrItems) ptr->m_arSPARKLINEGROUP.push_back(i->toBin()); return objectPtr; diff --git a/OOXML/XlsxFormat/Worksheets/WorksheetChildOther.cpp b/OOXML/XlsxFormat/Worksheets/WorksheetChildOther.cpp index 66d3b9e85d..173a36905b 100644 --- a/OOXML/XlsxFormat/Worksheets/WorksheetChildOther.cpp +++ b/OOXML/XlsxFormat/Worksheets/WorksheetChildOther.cpp @@ -562,6 +562,8 @@ namespace OOX XLS::BaseObjectPtr objectPtr(ptr); if(m_oBlackAndWhite.IsInit()) ptr->fNoColor = m_oBlackAndWhite->m_eValue; + else + ptr->fNoColor = false; if (ptr->fNoColor && m_oCellComments.IsInit()) { if (m_oCellComments == SimpleTypes::Spreadsheet::ECellComments::cellcommentsAtEnd) @@ -577,9 +579,13 @@ namespace OOX if (m_oDraft.IsInit()) ptr->fDraft = m_oDraft->m_eValue; + else + ptr->fDraft = false; if (m_oErrors.IsInit()) ptr->iErrors = m_oErrors->m_eValue; + else + ptr->iErrors = 0; if (m_oFirstPageNumber.IsInit()) ptr->iPageStart = m_oFirstPageNumber->m_eValue; @@ -643,7 +649,9 @@ namespace OOX if (m_oVerticalDpi.IsInit()) ptr->iVRes = m_oVerticalDpi->m_eValue; - + else + ptr->iVRes = 0; + ptr->fEndNotes = false; return objectPtr; } XLS::BaseObjectPtr CPageSetup::toBinCs() @@ -653,6 +661,8 @@ namespace OOX if(m_oBlackAndWhite.IsInit()) ptr->fNoColor = m_oBlackAndWhite->m_eValue; + else + ptr->fNoColor = false; if (ptr->fNoColor) { if (m_oCellComments == SimpleTypes::Spreadsheet::ECellComments::cellcommentsAtEnd) @@ -660,19 +670,24 @@ namespace OOX else if(m_oCellComments == SimpleTypes::Spreadsheet::ECellComments::cellcommentsAsDisplayed) ptr->fNotes = false; } - + ptr->fEndNotes = false; if (m_oCopies.IsInit()) ptr->iCopies = m_oCopies->m_eValue; + else + ptr->iCopies = 0; if (m_oDraft.IsInit()) ptr->fDraft = m_oDraft->m_eValue; - + else + ptr->fDraft = 0; if (m_oFirstPageNumber.IsInit()) ptr->iPageStart = m_oFirstPageNumber->m_eValue; - + else + ptr->iPageStart = 0; if (m_oHorizontalDpi.IsInit()) ptr->iRes = m_oHorizontalDpi->m_eValue; - + else + ptr->iRes = 0; if (m_oRId.IsInit()) ptr->szRelID = m_oRId->GetValue(); @@ -686,12 +701,22 @@ namespace OOX if (m_oPaperSize.IsInit()) ptr->iPaperSize = m_oPaperSize->m_eValue; + else + ptr->iPaperSize = 9; + + if (m_oScale.IsInit()) + ptr->iScale = m_oScale->m_eValue; + else + ptr->iScale = 100; if (m_oUseFirstPageNumber.IsInit()) ptr->fUsePage = m_oUseFirstPageNumber->m_eValue; - + else + ptr->fUsePage = false; if (m_oVerticalDpi.IsInit()) ptr->iVRes = m_oVerticalDpi->m_eValue; + else + ptr->iVRes = 0; return objectPtr; }