diff options
author | Tamás Zolnai <tamas.zolnai@collabora.com> | 2017-09-28 23:43:43 +0200 |
---|---|---|
committer | Tamás Zolnai <tamas.zolnai@collabora.com> | 2017-09-30 12:50:19 +0200 |
commit | 9e81e845d8299f117e96c30e8b40fcf602e9ca2c (patch) | |
tree | 92ea22af474b5683aff856373335362ac4f372ee /sc | |
parent | e8879de7bcd940fd1a92e426d807777162fa1f73 (diff) |
tdf#112733: Pivot table is displayed wrong in Excel after saved in LO Calc
Change-Id: I5dad2ff95ab5dd090296cf8c6e4a8274355c262b
Reviewed-on: https://gerrit.libreoffice.org/42955
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Tamás Zolnai <tamas.zolnai@collabora.com>
Diffstat (limited to 'sc')
-rwxr-xr-x | sc/qa/unit/data/xlsx/pivot_table_first_header_row.xlsx | bin | 0 -> 15705 bytes | |||
-rw-r--r-- | sc/qa/unit/subsequent_export-test.cxx | 23 | ||||
-rw-r--r-- | sc/source/filter/excel/xepivotxml.cxx | 2 |
3 files changed, 24 insertions, 1 deletions
diff --git a/sc/qa/unit/data/xlsx/pivot_table_first_header_row.xlsx b/sc/qa/unit/data/xlsx/pivot_table_first_header_row.xlsx Binary files differnew file mode 100755 index 000000000000..664637d4bd57 --- /dev/null +++ b/sc/qa/unit/data/xlsx/pivot_table_first_header_row.xlsx diff --git a/sc/qa/unit/subsequent_export-test.cxx b/sc/qa/unit/subsequent_export-test.cxx index 4ceb568bc26a..aad799b90285 100644 --- a/sc/qa/unit/subsequent_export-test.cxx +++ b/sc/qa/unit/subsequent_export-test.cxx @@ -219,6 +219,7 @@ public: void testPivotTableRowColPageFieldFilter(); void testPivotTableEmptyItem(); void testPivotTablePageFieldFilter(); + void testPivotTableFirstHeaderRowXLSX(); CPPUNIT_TEST_SUITE(ScExportTest); CPPUNIT_TEST(test); @@ -332,6 +333,7 @@ public: CPPUNIT_TEST(testPivotTableRowColPageFieldFilter); CPPUNIT_TEST(testPivotTableEmptyItem); CPPUNIT_TEST(testPivotTablePageFieldFilter); + CPPUNIT_TEST(testPivotTableFirstHeaderRowXLSX); CPPUNIT_TEST_SUITE_END(); @@ -4855,6 +4857,27 @@ void ScExportTest::testPivotTablePageFieldFilter() xDocSh->DoClose(); } +void ScExportTest::testPivotTableFirstHeaderRowXLSX() +{ + // tdf#112733: We have different tables here, but have the same value as firstHeaderRow + // The documentation is not clear about thit firstHeaderRow actually measn, but MS Excel works on this way + ScDocShellRef xShell = loadDoc("pivot_table_first_header_row.", 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); + assertXPath(pTable, "/x:pivotTableDefinition/x:location", "firstHeaderRow", "1"); + + pTable = XPathHelper::parseExport(pXPathFile, m_xSFactory, "xl/pivotTables/pivotTable2.xml"); + CPPUNIT_ASSERT(pTable); + assertXPath(pTable, "/x:pivotTableDefinition/x:location", "firstHeaderRow", "1"); + + pTable = XPathHelper::parseExport(pXPathFile, m_xSFactory, "xl/pivotTables/pivotTable3.xml"); + CPPUNIT_ASSERT(pTable); + assertXPath(pTable, "/x:pivotTableDefinition/x:location", "firstHeaderRow", "1"); +} + 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 3b44b67022ef..4a1011f7c22c 100644 --- a/sc/source/filter/excel/xepivotxml.cxx +++ b/sc/source/filter/excel/xepivotxml.cxx @@ -677,7 +677,7 @@ void XclExpXmlPivotTables::SavePivotTableXml( XclExpXmlStream& rStrm, const ScDP // NB: Excel's range does not include page field area (if any). ScRange aOutRange = rDPObj.GetOutputRangeByType(sheet::DataPilotOutputRangeType::TABLE); - sal_Int32 nFirstHeaderRow = aColFields.size(); + sal_Int32 nFirstHeaderRow = rDPObj.GetHeaderLayout() ? 2 : 1; sal_Int32 nFirstDataRow = 2; sal_Int32 nFirstDataCol = 1; ScRange aResRange = rDPObj.GetOutputRangeByType(sheet::DataPilotOutputRangeType::RESULT); |