diff options
Diffstat (limited to 'sc')
-rw-r--r-- | sc/qa/unit/data/ods/tdf121612.ods | bin | 0 -> 48719 bytes | |||
-rw-r--r-- | sc/qa/unit/subsequent_export-test.cxx | 20 | ||||
-rw-r--r-- | sc/source/filter/excel/xepivotxml.cxx | 11 |
3 files changed, 29 insertions, 2 deletions
diff --git a/sc/qa/unit/data/ods/tdf121612.ods b/sc/qa/unit/data/ods/tdf121612.ods Binary files differnew file mode 100644 index 000000000000..6afc4e0c931c --- /dev/null +++ b/sc/qa/unit/data/ods/tdf121612.ods diff --git a/sc/qa/unit/subsequent_export-test.cxx b/sc/qa/unit/subsequent_export-test.cxx index 1425ff330954..f084ad015f29 100644 --- a/sc/qa/unit/subsequent_export-test.cxx +++ b/sc/qa/unit/subsequent_export-test.cxx @@ -39,6 +39,7 @@ #include <validat.hxx> #include <global.hxx> #include <scmod.hxx> +#include <dpobject.hxx> #include <svx/svdpage.hxx> #include <svx/svdograf.hxx> @@ -206,6 +207,7 @@ public: void testKeepSettingsOfBlankRows(); void testTdf118990(); + void testTdf121612(); CPPUNIT_TEST_SUITE(ScExportTest); CPPUNIT_TEST(test); @@ -319,6 +321,7 @@ public: CPPUNIT_TEST(testKeepSettingsOfBlankRows); CPPUNIT_TEST(testTdf118990); + CPPUNIT_TEST(testTdf121612); CPPUNIT_TEST_SUITE_END(); @@ -4169,6 +4172,23 @@ void ScExportTest::testTdf118990() xDocSh->DoClose(); } +void ScExportTest::testTdf121612() +{ + ScDocShellRef xDocSh = loadDoc("tdf121612.", FORMAT_ODS); + CPPUNIT_ASSERT(xDocSh.is()); + xDocSh = saveAndReload(xDocSh.get(), FORMAT_XLSX); + + ScDocument& rDoc = xDocSh->GetDocument(); + + // There should be a pivot table + CPPUNIT_ASSERT(rDoc.HasPivotTable()); + + // DP collection is not lost after export and has one entry + ScDPCollection* pDPColl = rDoc.GetDPCollection(); + CPPUNIT_ASSERT(pDPColl); + CPPUNIT_ASSERT_EQUAL(size_t(1), pDPColl->GetCount()); +} + 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 b7e790eca6da..271b4cb8fdf4 100644 --- a/sc/source/filter/excel/xepivotxml.cxx +++ b/sc/source/filter/excel/xepivotxml.cxx @@ -418,15 +418,22 @@ XclExpXmlPivotTableManager::XclExpXmlPivotTableManager( const XclExpRoot& rRoot void XclExpXmlPivotTableManager::Initialize() { - const ScDocument& rDoc = GetDoc(); + ScDocument& rDoc = GetDoc(); if (!rDoc.HasPivotTable()) // No pivot table to export. return; - const ScDPCollection* pDPColl = rDoc.GetDPCollection(); + ScDPCollection* pDPColl = rDoc.GetDPCollection(); if (!pDPColl) return; + // Update caches from DPObject + for (size_t i = 0; i < pDPColl->GetCount(); ++i) + { + ScDPObject& rDPObj = (*pDPColl)[i]; + rDPObj.SyncAllDimensionMembers(); + } + // Go through the caches first. std::vector<XclExpXmlPivotCaches::Entry> aCaches; |