include/test/unoapi_test.hxx | 2 + sc/qa/unit/data/xlsx/tdf165180_date1904.xlsx |binary sc/qa/unit/subsequent_export_test2.cxx | 36 +++++++++++++++++++++++++++ sc/source/filter/excel/excrecds.cxx | 12 +++------ 4 files changed, 42 insertions(+), 8 deletions(-)
New commits: commit ed02bb7938ddaa92e3b49772c73b8ade750b9e0a Author: Justin Luth <[email protected]> AuthorDate: Thu Dec 4 08:46:35 2025 -0500 Commit: Justin Luth <[email protected]> CommitDate: Sat Dec 6 12:11:37 2025 +0100 related tdf#165180 sc:don't export dateCompatibility - strict-xml only dateCompatibility is ignored by ECMA 1st edition (Excel 2007) and ISOIEC29500 (Excel 2010+). This effectively reverts 25.8.4 commit 990075b66846e78257df7aaa43a23cecf4b7ec9d make CppunitTest_sc_subsequent_export_test2 \ CPPUNIT_TEST_NAME=testTdf165180_date1904 Change-Id: I1d3beb2d3d14d983ba83edb8b63d05f127a0eaf4 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/194970 Tested-by: Jenkins Reviewed-by: Justin Luth <[email protected]> (cherry picked from commit 0c8944956f2d7bde41412668dca0e727de25f9f3) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/195115 diff --git a/include/test/unoapi_test.hxx b/include/test/unoapi_test.hxx index f00cfa5308ac..dbf046cb4abb 100644 --- a/include/test/unoapi_test.hxx +++ b/include/test/unoapi_test.hxx @@ -66,6 +66,7 @@ enum class TestFilter XLSM, XLST, XLSX, + XLSX_2007, }; const std::unordered_map<TestFilter, OUString> TestFilterNames{ @@ -110,6 +111,7 @@ const std::unordered_map<TestFilter, OUString> TestFilterNames{ { TestFilter::XLSM, u"Calc MS Excel 2007 VBA XML"_ustr }, { TestFilter::XLST, u"Calc MS Excel 2007 XML Template"_ustr }, { TestFilter::XLSX, u"Calc Office Open XML"_ustr }, + { TestFilter::XLSX_2007, u"Calc MS Excel 2007 XML"_ustr }, }; // basic uno api test class diff --git a/sc/qa/unit/data/xlsx/tdf165180_date1904.xlsx b/sc/qa/unit/data/xlsx/tdf165180_date1904.xlsx new file mode 100644 index 000000000000..4242fe2b9606 Binary files /dev/null and b/sc/qa/unit/data/xlsx/tdf165180_date1904.xlsx differ diff --git a/sc/qa/unit/subsequent_export_test2.cxx b/sc/qa/unit/subsequent_export_test2.cxx index 4aabf03cbcdc..637fac6fbde6 100644 --- a/sc/qa/unit/subsequent_export_test2.cxx +++ b/sc/qa/unit/subsequent_export_test2.cxx @@ -1005,6 +1005,42 @@ CPPUNIT_TEST_FIXTURE(ScExportTest2, testXltxExport) u"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml"); } +CPPUNIT_TEST_FIXTURE(ScExportTest2, testTdf165180_date1904) +{ + // given a hand-modified document (which added dateCompatibility="0") + // with an earliest date of 1904 (Excel-for-mac null-date) + + // ensure en-US locale for expected date formatting + SvtSysLocaleOptions aOptions; + OUString sLocaleConfigString = aOptions.GetLanguageTag().getBcp47(); + aOptions.SetLocaleConfigString(u"en-US"_ustr); + aOptions.Commit(); + comphelper::ScopeGuard g([&aOptions, &sLocaleConfigString] { + aOptions.SetLocaleConfigString(sLocaleConfigString); + aOptions.Commit(); + }); + + createScDoc("xlsx/tdf165180_date1904.xlsx"); + saveAndReload(TestFilter::XLSX_2007); + + ScDocument* pDoc = getScDoc(); + CPPUNIT_ASSERT_EQUAL(u"Tuesday, March 1, 1904"_ustr, pDoc->GetString(0, 0, 0)); + + xmlDocUniquePtr pWorkbook = parseExport(u"xl/workbook.xml"_ustr); + // dateCompatibility is ignored: make sure that date1904=true is round-tripped + assertXPath(pWorkbook, "/x:workbook/x:workbookPr", "date1904", u"true"); + + createScDoc("xlsx/tdf165180_date1904.xlsx"); + saveAndReload(TestFilter::XLSX); + + pDoc = getScDoc(); + CPPUNIT_ASSERT_EQUAL(u"Tuesday, March 1, 1904"_ustr, pDoc->GetString(0, 0, 0)); + + pWorkbook = parseExport(u"xl/workbook.xml"_ustr); + // dateCompatibility is ignored: make sure that date1904=true is round-tripped + assertXPath(pWorkbook, "/x:workbook/x:workbookPr", "date1904", u"true"); +} + CPPUNIT_TEST_FIXTURE(ScExportTest2, testPivotCacheAfterExportXLSX) { createScDoc("ods/numgroup_example.ods"); diff --git a/sc/source/filter/excel/excrecds.cxx b/sc/source/filter/excel/excrecds.cxx index 4373c6c2ea97..def9da8bdeca 100644 --- a/sc/source/filter/excel/excrecds.cxx +++ b/sc/source/filter/excel/excrecds.cxx @@ -267,14 +267,10 @@ sal_uInt16 Exc1904::GetNum() const void Exc1904::SaveXml( XclExpXmlStream& rStrm ) { - if( rStrm.getVersion() == oox::core::ECMA_376_1ST_EDITION ) // Word 2007 Compat - { - rStrm.WriteAttributes(XML_dateCompatibility, ToPsz(bDateCompatibility)); - } - else - { - rStrm.WriteAttributes(XML_date1904, ToPsz(bVal)); - } + // dateCompatibility appears to only apply to "strict xml" which we don't export to, + // (and seems to only determine whether date1904 is considered or not when in strict mode). + + rStrm.WriteAttributes(XML_date1904, ToPsz(bVal)); } //------------------------------------------------------ class ExcBundlesheet -
