diff options
author | Vasily Melenchuk <vasily.melenchuk@cib.de> | 2018-11-22 11:30:29 +0300 |
---|---|---|
committer | Andras Timar <andras.timar@collabora.com> | 2019-01-17 13:39:58 +0100 |
commit | cd66b523ca1c08e5641423d80f62efb27d68c2f7 (patch) | |
tree | cc937cf9895996169b062a8132ae07983270cf6a | |
parent | 5ce47ed1f93f8b7f283630221e9fd738dc3d917a (diff) |
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.
Reviewed-on: https://gerrit.libreoffice.org/63785
Tested-by: Jenkins
Reviewed-by: Katarina Behrens <Katarina.Behrens@cib.de>
Reviewed-by: Thorsten Behrens <Thorsten.Behrens@CIB.de>
Reviewed-on: https://gerrit.libreoffice.org/64265
Tested-by: Thorsten Behrens <Thorsten.Behrens@CIB.de>
(cherry picked from commit 78457f7462aa3bf92839667a550451f0d434f48b)
Reviewed-on: https://gerrit.libreoffice.org/64303
Reviewed-by: Vasily Melenchuk <vasily.melenchuk@cib.de>
(cherry picked from commit 52c088c4d738a3299bda434635a2d9f2da03467c)
Change-Id: Ib0b9e98a5588159c5c7de1e2e5d2bdcbfe986d8d
-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 7ecaba7a6d68..6492d7bdf890 100644 --- a/sc/qa/unit/subsequent_export-test.cxx +++ b/sc/qa/unit/subsequent_export-test.cxx @@ -44,6 +44,7 @@ #include <attrib.hxx> #include <globstr.hrc> #include <global.hxx> +#include <dpobject.hxx> #include <svx/svdoole2.hxx> #include <svx/svdpage.hxx> @@ -211,6 +212,7 @@ public: void testTdf118990(); void testKeepSettingsOfBlankRows(); + void testTdf121612(); CPPUNIT_TEST_SUITE(ScExportTest); CPPUNIT_TEST(test); @@ -321,6 +323,7 @@ public: CPPUNIT_TEST(testOpenDocumentAsReadOnly); CPPUNIT_TEST(testTdf118990); CPPUNIT_TEST(testKeepSettingsOfBlankRows); + CPPUNIT_TEST(testTdf121612); CPPUNIT_TEST_SUITE_END(); @@ -4102,6 +4105,23 @@ void ScExportTest::testKeepSettingsOfBlankRows() assertXPath(pSheet, "/x:worksheet/x:sheetData/x:row", 2); } +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 40b728f4fe35..5d47d628cee7 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; |