sc/qa/unit/data/ods/tdf100458_lost_zero_value.ods |binary sc/qa/unit/subsequent_filters-test.cxx | 14 ++++++++++++++ sc/source/filter/xml/xmlcelli.cxx | 1 - 3 files changed, 14 insertions(+), 1 deletion(-)
New commits: commit 21a3d78cf080dc4d86edab2a7378055a2d848bfe Author: Jan-Marek Glogowski <[email protected]> Date: Fri Jun 17 21:22:02 2016 +0200 tdf#100458 Don't forcefully change cell type Just quoting the source comment from the breaking commit 61c39eae570d6d6040b65bfe93127b30e6080cc8. // If a matrix formula has a matrix reference cell that is intended to // have // a blank text result, the matrix reference cell is actually // saved(export) as a float cell with 0 as the value and empty <text:p/>. Ok // Import works around this by setting these cells as text cells so that // the blank text is used for display instead of the number 0. This seems to be wrong. Forcing the cell to a util::NumberFormat::TEXT actually kills the cell value, if the text is a result of the formular. I'm not sure if forcefully changing the cell format at this point is correct at any time, if a cell type was already determinated. I imagine that an undefined cell type should probably be fixed at the end of the row import, if Calc detected an error case, or even generally, This patch is just a minimalistic initial fix. If it's correct, it probably needs an additional code comment. Change-Id: If7d9d69467d56c7d8fd2444f9e8b3ae906285264 Reviewed-on: https://gerrit.libreoffice.org/26435 Reviewed-by: Eike Rathke <[email protected]> Reviewed-by: Markus Mohrhard <[email protected]> Tested-by: Markus Mohrhard <[email protected]> diff --git a/sc/qa/unit/data/ods/tdf100458_lost_zero_value.ods b/sc/qa/unit/data/ods/tdf100458_lost_zero_value.ods new file mode 100644 index 0000000..afc65e7 Binary files /dev/null and b/sc/qa/unit/data/ods/tdf100458_lost_zero_value.ods differ diff --git a/sc/qa/unit/subsequent_filters-test.cxx b/sc/qa/unit/subsequent_filters-test.cxx index 0c1428e..35f0cbe 100644 --- a/sc/qa/unit/subsequent_filters-test.cxx +++ b/sc/qa/unit/subsequent_filters-test.cxx @@ -215,6 +215,8 @@ public: void testBnc762542(); + void testTdf100458(); + CPPUNIT_TEST_SUITE(ScFiltersTest); CPPUNIT_TEST(testBooleanFormatXLSX); CPPUNIT_TEST(testBasicCellContentODS); @@ -318,6 +320,8 @@ public: CPPUNIT_TEST(testHiddenSheetsXLSX); + CPPUNIT_TEST(testTdf100458); + CPPUNIT_TEST_SUITE_END(); private: @@ -3328,6 +3332,16 @@ void ScFiltersTest::testRelFormulaValidationXLS() xDocSh->DoClose(); } +void ScFiltersTest::testTdf100458() +{ + ScDocShellRef xDocSh = loadDoc("tdf100458_lost_zero_value.", FORMAT_ODS); + CPPUNIT_ASSERT_MESSAGE("Failed to open doc", xDocSh.Is()); + ScDocument& rDoc = xDocSh->GetDocument(); + CPPUNIT_ASSERT(rDoc.HasValueData(0, 0, 0)); + CPPUNIT_ASSERT_EQUAL(double(0.0), rDoc.GetValue(0,0,0)); + CPPUNIT_ASSERT(!rDoc.HasStringData(0, 0, 0)); +} + ScFiltersTest::ScFiltersTest() : ScBootstrapFixture( "sc/qa/unit/data" ) { diff --git a/sc/source/filter/xml/xmlcelli.cxx b/sc/source/filter/xml/xmlcelli.cxx index 149435e..c8825fe 100644 --- a/sc/source/filter/xml/xmlcelli.cxx +++ b/sc/source/filter/xml/xmlcelli.cxx @@ -1511,7 +1511,6 @@ void ScXMLTableRowCellContext::EndElement() if( bFormulaTextResult && (mbPossibleErrorCell || mbCheckWithCompilerForError) ) { maStringValue.reset(GetFirstParagraph()); - nCellType = util::NumberFormat::TEXT; } ScAddress aCellPos = rXMLImport.GetTables().GetCurrentCellPos(); _______________________________________________ Libreoffice-commits mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
