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>
This commit is contained in:
Tamás Zolnai 2017-09-28 23:43:43 +02:00
parent e8879de7bc
commit 9e81e845d8
3 changed files with 24 additions and 1 deletions

Binary file not shown.

View file

@ -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();

View file

@ -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);