diff options
-rw-r--r-- | sc/qa/unit/data/xlsx/tdf41425.xlsx | bin | 0 -> 5496 bytes | |||
-rw-r--r-- | sc/qa/unit/subsequent_export-test.cxx | 15 | ||||
-rw-r--r-- | sc/source/filter/excel/xetable.cxx | 3 |
3 files changed, 18 insertions, 0 deletions
diff --git a/sc/qa/unit/data/xlsx/tdf41425.xlsx b/sc/qa/unit/data/xlsx/tdf41425.xlsx Binary files differnew file mode 100644 index 000000000000..f7d3ec9ed6ec --- /dev/null +++ b/sc/qa/unit/data/xlsx/tdf41425.xlsx diff --git a/sc/qa/unit/subsequent_export-test.cxx b/sc/qa/unit/subsequent_export-test.cxx index 1b4f353fb2dd..4f30673e8c28 100644 --- a/sc/qa/unit/subsequent_export-test.cxx +++ b/sc/qa/unit/subsequent_export-test.cxx @@ -209,6 +209,7 @@ public: void testHiddenRepeatedRowsODS(); void testHyperlinkTargetFrameODS(); void testOpenDocumentAsReadOnly(); + void testKeepSettingsOfBlankRows(); CPPUNIT_TEST_SUITE(ScExportTest); CPPUNIT_TEST(test); @@ -317,6 +318,7 @@ public: CPPUNIT_TEST(testHiddenRepeatedRowsODS); CPPUNIT_TEST(testHyperlinkTargetFrameODS); CPPUNIT_TEST(testOpenDocumentAsReadOnly); + CPPUNIT_TEST(testKeepSettingsOfBlankRows); CPPUNIT_TEST_SUITE_END(); @@ -4048,6 +4050,19 @@ void ScExportTest::testOpenDocumentAsReadOnly() xDocSh2->DoClose(); } +void ScExportTest::testKeepSettingsOfBlankRows() +{ + ScDocShellRef xDocSh = loadDoc("tdf41425.", FORMAT_XLSX); + CPPUNIT_ASSERT(xDocSh.is()); + + std::shared_ptr<utl::TempFile> pXPathFile = ScBootstrapFixture::exportTo(&(*xDocSh), FORMAT_XLSX); + xmlDocPtr pSheet = XPathHelper::parseExport(pXPathFile, m_xSFactory, "xl/worksheets/sheet1.xml"); + CPPUNIT_ASSERT(pSheet); + + // saved blank row with not default setting in A2 + assertXPath(pSheet, "/x:worksheet/x:sheetData/x:row", 2); +} + CPPUNIT_TEST_SUITE_REGISTRATION(ScExportTest); CPPUNIT_PLUGIN_IMPLEMENT(); diff --git a/sc/source/filter/excel/xetable.cxx b/sc/source/filter/excel/xetable.cxx index b68b094d0660..9f777e4c8f35 100644 --- a/sc/source/filter/excel/xetable.cxx +++ b/sc/source/filter/excel/xetable.cxx @@ -2455,6 +2455,9 @@ XclExpCellTable::XclExpCellTable( const XclExpRoot& rRoot ) : if(nLastUsedScCol > nMaxScCol) nLastUsedScCol = nMaxScCol; + // check extra blank rows to avoid of losing their not default settings (workaround for tdf#41425) + nLastUsedScRow += 1000; + if(nLastUsedScRow > nMaxScRow) nLastUsedScRow = nMaxScRow; |