diff options
author | Aron Budea <aron.budea@collabora.com> | 2017-11-28 07:23:12 +0100 |
---|---|---|
committer | Eike Rathke <erack@redhat.com> | 2017-12-01 22:03:06 +0100 |
commit | f8b9d0fb0767d8bbe8477f92abaf6b8e0ff65546 (patch) | |
tree | f31b0c147f2ea0ba38d851b79b99fd2bda58812f /sc/qa | |
parent | 1764c0358d7de602d6efaca940bde9081f7a0b65 (diff) |
tdf#109240, tdf#112571: don't export dupe built-in named ranges
XclTools::GetBuiltInDefNameIndex(...) only checked for prefix used in
binary Excel format, and didn't recognize OOXML built-in names, which
resulted in saving them twice in OOXML files.
Adapt to check both binary and OOXML prefixes, similarly to
XclTools::IsBuiltInStyleName(...).
Saving "bad" files after the fix will purge bad "_0", "_0_0" etc.
suffixed built-in names due to how GetBuiltInDefNameIndex(...) works.
Change-Id: I1bbe11f9c654a142a4626003df4cb0fd2a0f9c71
Reviewed-on: https://gerrit.libreoffice.org/45381
Reviewed-by: Eike Rathke <erack@redhat.com>
Tested-by: Eike Rathke <erack@redhat.com>
Diffstat (limited to 'sc/qa')
-rw-r--r-- | sc/qa/unit/data/xlsx/built-in_ranges.xlsx | bin | 0 -> 10164 bytes | |||
-rw-r--r-- | sc/qa/unit/subsequent_export-test.cxx | 28 |
2 files changed, 28 insertions, 0 deletions
diff --git a/sc/qa/unit/data/xlsx/built-in_ranges.xlsx b/sc/qa/unit/data/xlsx/built-in_ranges.xlsx Binary files differnew file mode 100644 index 000000000000..b18a4862fdd6 --- /dev/null +++ b/sc/qa/unit/data/xlsx/built-in_ranges.xlsx diff --git a/sc/qa/unit/subsequent_export-test.cxx b/sc/qa/unit/subsequent_export-test.cxx index 0e7a3913ba35..06ed9dcdf9ad 100644 --- a/sc/qa/unit/subsequent_export-test.cxx +++ b/sc/qa/unit/subsequent_export-test.cxx @@ -103,6 +103,7 @@ public: void testConditionalFormatRangeListXLSX(); void testMiscRowHeightExport(); void testNamedRangeBugfdo62729(); + void testBuiltinRangesXLSX(); void testRichTextExportODS(); void testRichTextCellFormatXLSX(); void testFormulaRefSheetNameODS(); @@ -212,6 +213,7 @@ public: CPPUNIT_TEST(testConditionalFormatRangeListXLSX); CPPUNIT_TEST(testMiscRowHeightExport); CPPUNIT_TEST(testNamedRangeBugfdo62729); + CPPUNIT_TEST(testBuiltinRangesXLSX); CPPUNIT_TEST(testRichTextExportODS); CPPUNIT_TEST(testRichTextCellFormatXLSX); CPPUNIT_TEST(testFormulaRefSheetNameODS); @@ -1159,6 +1161,32 @@ void ScExportTest::testNamedRangeBugfdo62729() xDocSh->DoClose(); } +void ScExportTest::testBuiltinRangesXLSX() +{ + ScDocShellRef xShell = loadDoc("built-in_ranges.", FORMAT_XLSX); + CPPUNIT_ASSERT(xShell.is()); + ScDocShellRef xDocSh = saveAndReload(xShell.get(), FORMAT_XLSX); + CPPUNIT_ASSERT(xDocSh.is()); + xShell->DoClose(); + + xmlDocPtr pDoc = XPathHelper::parseExport(*xDocSh, m_xSFactory, "xl/workbook.xml", FORMAT_XLSX); + CPPUNIT_ASSERT(pDoc); + + //assert the existing OOXML built-in names are still there + assertXPathContent(pDoc, "/x:workbook/x:definedNames/x:definedName[@name='_xlnm._FilterDatabase'][@localSheetId='0']", "'Sheet1 Test'!$A$1:$A$5"); + assertXPathContent(pDoc, "/x:workbook/x:definedNames/x:definedName[@name='_xlnm._FilterDatabase'][@localSheetId='1']", "'Sheet2 Test'!$K$10:$K$14"); + assertXPathContent(pDoc, "/x:workbook/x:definedNames/x:definedName[@name='_xlnm.Print_Area'][@localSheetId='0']", "'Sheet1 Test'!$A$1:$A$5"); + assertXPathContent(pDoc, "/x:workbook/x:definedNames/x:definedName[@name='_xlnm.Print_Area'][@localSheetId='1']", "'Sheet2 Test'!$K$10:$M$18"); + + //...and that no extra ones are added (see tdf#112571) + assertXPath(pDoc, "/x:workbook/x:definedNames/x:definedName[@name='_xlnm._FilterDatabase_0'][@localSheetId='0']", 0); + assertXPath(pDoc, "/x:workbook/x:definedNames/x:definedName[@name='_xlnm._FilterDatabase_0'][@localSheetId='1']", 0); + assertXPath(pDoc, "/x:workbook/x:definedNames/x:definedName[@name='_xlnm.Print_Area_0'][@localSheetId='0']", 0); + assertXPath(pDoc, "/x:workbook/x:definedNames/x:definedName[@name='_xlnm.Print_Area_0'][@localSheetId='1']", 0); + + xDocSh->DoClose(); +} + void ScExportTest::testRichTextExportODS() { struct |