summaryrefslogtreecommitdiff
path: root/sc
diff options
context:
space:
mode:
authorVasily Melenchuk <vasily.melenchuk@cib.de>2018-11-22 11:30:29 +0300
committerKatarina Behrens <Katarina.Behrens@cib.de>2018-11-30 15:54:08 +0100
commit52c088c4d738a3299bda434635a2d9f2da03467c (patch)
tree4bf1f5923ef0899bbdb8fabbd62a690bde049c4b /sc
parentd559d7085f8c160c9946ef3eb49250aa12358968 (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. Change-Id: Ib0b9e98a5588159c5c7de1e2e5d2bdcbfe986d8d 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>
Diffstat (limited to 'sc')
-rw-r--r--sc/qa/unit/data/ods/tdf121612.odsbin0 -> 48719 bytes
-rw-r--r--sc/qa/unit/subsequent_export-test.cxx20
-rw-r--r--sc/source/filter/excel/xepivotxml.cxx11
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
new file mode 100644
index 000000000000..6afc4e0c931c
--- /dev/null
+++ b/sc/qa/unit/data/ods/tdf121612.ods
Binary files 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;