sc/qa/unit/data/ods/tdf121612.ods |binary sc/qa/unit/subsequent_export-test.cxx | 20 ++++++++++++++++++++ sc/source/filter/excel/xepivotxml.cxx | 11 +++++++++-- 3 files changed, 29 insertions(+), 2 deletions(-)
New commits: commit 78457f7462aa3bf92839667a550451f0d434f48b Author: Vasily Melenchuk <vasily.melenc...@cib.de> AuthorDate: Thu Nov 22 11:30:29 2018 +0300 Commit: Thorsten Behrens <thorsten.behr...@cib.de> CommitDate: Thu Nov 29 23:10:15 2018 +0100 tdf#121612: update pivot caches during saving to XLSX Cache was empty so pivot table was not exported completely and pivot table filter were missing. Change-Id: Ib0b9e98a5588159c5c7de1e2e5d2bdcbfe986d8d Reviewed-on: https://gerrit.libreoffice.org/63785 Tested-by: Jenkins Reviewed-by: Katarina Behrens <katarina.behr...@cib.de> Reviewed-by: Thorsten Behrens <thorsten.behr...@cib.de> Reviewed-on: https://gerrit.libreoffice.org/64265 Tested-by: Thorsten Behrens <thorsten.behr...@cib.de> diff --git a/sc/qa/unit/data/ods/tdf121612.ods b/sc/qa/unit/data/ods/tdf121612.ods new file mode 100644 index 000000000000..6afc4e0c931c Binary files /dev/null and b/sc/qa/unit/data/ods/tdf121612.ods differ diff --git a/sc/qa/unit/subsequent_export-test.cxx b/sc/qa/unit/subsequent_export-test.cxx index 36f62373e7e0..2fb53a18ac3c 100644 --- a/sc/qa/unit/subsequent_export-test.cxx +++ b/sc/qa/unit/subsequent_export-test.cxx @@ -43,6 +43,7 @@ #include <validat.hxx> #include <attrib.hxx> #include <global.hxx> +#include <dpobject.hxx> #include <svx/svdoole2.hxx> #include <svx/svdpage.hxx> @@ -209,6 +210,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(); @@ -4068,6 +4071,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 004f9938a72a..0f432793ec5a 100644 --- a/sc/source/filter/excel/xepivotxml.cxx +++ b/sc/source/filter/excel/xepivotxml.cxx @@ -419,15 +419,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; _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits