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 000000000000..afc65e7c1a61 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 0c1428ec3c06..35f0cbe9d961 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 149435ec3766..c8825fef003e 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();