[Libreoffice-commits] core.git: Branch 'distro/collabora/cp-5.3' - sc/qa sc/source

Tamás Zolnai tamas.zolnai at collabora.com
Sat Oct 7 09:42:29 UTC 2017


 sc/qa/unit/data/xlsx/pivot_table_first_header_row.xlsx |binary
 sc/qa/unit/subsequent_export-test.cxx                  |   23 +++++++++++++++++
 sc/source/filter/excel/xepivotxml.cxx                  |    2 -
 3 files changed, 24 insertions(+), 1 deletion(-)

New commits:
commit 307f95db16880d2fed121c2ebb80485abf7e8ed5
Author: Tamás Zolnai <tamas.zolnai at collabora.com>
Date:   Mon Oct 2 16:59:18 2017 +0200

    tdf#112733: Pivot table is displayed wrong in Excel after saved in LO Calc
    
    Reviewed-on: https://gerrit.libreoffice.org/42955
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Tamás Zolnai <tamas.zolnai at collabora.com>
    (cherry picked from commit 9e81e845d8299f117e96c30e8b40fcf602e9ca2c)
    
    Change-Id: I5dad2ff95ab5dd090296cf8c6e4a8274355c262b
    Reviewed-on: https://gerrit.libreoffice.org/43051
    Reviewed-by: Andras Timar <andras.timar at collabora.com>
    Tested-by: Andras Timar <andras.timar at collabora.com>

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
new file mode 100755
index 000000000000..664637d4bd57
Binary files /dev/null and b/sc/qa/unit/data/xlsx/pivot_table_first_header_row.xlsx differ
diff --git a/sc/qa/unit/subsequent_export-test.cxx b/sc/qa/unit/subsequent_export-test.cxx
index 9466fbe8f28d..33c749382d36 100644
--- a/sc/qa/unit/subsequent_export-test.cxx
+++ b/sc/qa/unit/subsequent_export-test.cxx
@@ -207,6 +207,7 @@ public:
     void testPivotTableRowColPageFieldFilter();
     void testPivotTableEmptyItem();
     void testPivotTablePageFieldFilter();
+    void testPivotTableFirstHeaderRowXLSX();
 
     CPPUNIT_TEST_SUITE(ScExportTest);
     CPPUNIT_TEST(test);
@@ -314,6 +315,7 @@ public:
     CPPUNIT_TEST(testPivotTableRowColPageFieldFilter);
     CPPUNIT_TEST(testPivotTableEmptyItem);
     CPPUNIT_TEST(testPivotTablePageFieldFilter);
+    CPPUNIT_TEST(testPivotTableFirstHeaderRowXLSX);
 
     CPPUNIT_TEST_SUITE_END();
 
@@ -4760,6 +4762,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 dcbbb0fdb518..b50182e157d8 100644
--- a/sc/source/filter/excel/xepivotxml.cxx
+++ b/sc/source/filter/excel/xepivotxml.cxx
@@ -679,7 +679,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);


More information about the Libreoffice-commits mailing list