diff options
Diffstat (limited to 'sc')
-rwxr-xr-x | sc/qa/unit/data/xlsx/pivottable_outline_mode.xlsx | bin | 0 -> 12178 bytes | |||
-rw-r--r-- | sc/qa/unit/subsequent_export-test.cxx | 19 | ||||
-rw-r--r-- | sc/source/filter/excel/xepivotxml.cxx | 6 |
3 files changed, 25 insertions, 0 deletions
diff --git a/sc/qa/unit/data/xlsx/pivottable_outline_mode.xlsx b/sc/qa/unit/data/xlsx/pivottable_outline_mode.xlsx Binary files differnew file mode 100755 index 000000000000..6b575c0af7b3 --- /dev/null +++ b/sc/qa/unit/data/xlsx/pivottable_outline_mode.xlsx diff --git a/sc/qa/unit/subsequent_export-test.cxx b/sc/qa/unit/subsequent_export-test.cxx index d0596bdf06ef..21837ff11152 100644 --- a/sc/qa/unit/subsequent_export-test.cxx +++ b/sc/qa/unit/subsequent_export-test.cxx @@ -226,6 +226,7 @@ public: void testPivotTableBoolFieldFilterXLSX(); void testPivotTableRowColPageFieldFilterXLSX(); void testPivotTableErrorItemFilterXLSX(); + void testPivotTableOutlineModeXLSX(); CPPUNIT_TEST_SUITE(ScExportTest); CPPUNIT_TEST(test); @@ -346,6 +347,7 @@ public: CPPUNIT_TEST(testPivotTableBoolFieldFilterXLSX); CPPUNIT_TEST(testPivotTableRowColPageFieldFilterXLSX); CPPUNIT_TEST(testPivotTableErrorItemFilterXLSX); + CPPUNIT_TEST(testPivotTableOutlineModeXLSX); CPPUNIT_TEST_SUITE_END(); @@ -5251,6 +5253,23 @@ void ScExportTest::testPivotTableErrorItemFilterXLSX() xDocSh->DoClose(); } +void ScExportTest::testPivotTableOutlineModeXLSX() +{ + ScDocShellRef xShell = loadDoc("pivottable_outline_mode.", FORMAT_XLSX); + CPPUNIT_ASSERT(xShell.is()); + + std::shared_ptr<utl::TempFile> pXPathFile = ScBootstrapFixture::exportTo(&(*xShell), FORMAT_XLSX); + xmlDocPtr pTable = XPathHelper::parseExport(pXPathFile, m_xSFactory, "xl/pivotTables/pivotTable1.xml"); + CPPUNIT_ASSERT(pTable); + + // Next to the outline flags, compact flags also should be set (true is the default) + assertXPath(pTable, "/x:pivotTableDefinition", "outline", "1"); + assertXPath(pTable, "/x:pivotTableDefinition", "outlineData", "1"); + assertXPath(pTable, "/x:pivotTableDefinition", "compact", "0"); + assertXPath(pTable, "/x:pivotTableDefinition", "compactData", "0"); + assertXPath(pTable, "/x:pivotTableDefinition/x:pivotFields/x:pivotField[1]", "compact", "0"); +} + CPPUNIT_TEST_SUITE_REGISTRATION(ScExportTest); CPPUNIT_PLUGIN_IMPLEMENT(); diff --git a/sc/source/filter/excel/xepivotxml.cxx b/sc/source/filter/excel/xepivotxml.cxx index 9bc8836a57f4..6f9f7106f997 100644 --- a/sc/source/filter/excel/xepivotxml.cxx +++ b/sc/source/filter/excel/xepivotxml.cxx @@ -674,6 +674,8 @@ void XclExpXmlPivotTables::SavePivotTableXml( XclExpXmlStream& rStrm, const ScDP XML_indent, ToPsz10(false), XML_outline, ToPsz10(true), XML_outlineData, ToPsz10(true), + XML_compact, ToPsz10(false), + XML_compactData, ToPsz10(false), FSEND); // NB: Excel's range does not include page field area (if any). @@ -723,6 +725,7 @@ void XclExpXmlPivotTables::SavePivotTableXml( XclExpXmlStream& rStrm, const ScDP { pPivotStrm->singleElement(XML_pivotField, XML_showAll, ToPsz10(false), + XML_compact, ToPsz10(false), FSEND); continue; } @@ -733,6 +736,7 @@ void XclExpXmlPivotTables::SavePivotTableXml( XclExpXmlStream& rStrm, const ScDP { pPivotStrm->singleElement(XML_pivotField, XML_showAll, ToPsz10(false), + XML_compact, ToPsz10(false), FSEND); continue; } @@ -742,6 +746,7 @@ void XclExpXmlPivotTables::SavePivotTableXml( XclExpXmlStream& rStrm, const ScDP pPivotStrm->singleElement(XML_pivotField, XML_dataField, ToPsz10(true), XML_showAll, ToPsz10(false), + XML_compact, ToPsz10(false), FSEND); continue; @@ -810,6 +815,7 @@ void XclExpXmlPivotTables::SavePivotTableXml( XclExpXmlStream& rStrm, const ScDP if (!bHasDefaultSubtotal) pAttList->add(XML_defaultSubtotal, ToPsz10(false)); + pAttList->add( XML_compact, ToPsz10(false)); sax_fastparser::XFastAttributeListRef xAttributeList(pAttList); pPivotStrm->startElement(XML_pivotField, xAttributeList); |