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 da0728fcfc472d9c1130b6b8986bb6d0ae23f9a2
Author:     Justin Luth <[email protected]>
AuthorDate: Thu Dec 4 08:46:35 2025 -0500
Commit:     Miklos Vajna <[email protected]>
CommitDate: Mon Dec 8 14:30:47 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/+/195116
    Reviewed-by: Miklos Vajna <[email protected]>
    Tested-by: Jenkins CollaboraOffice <[email protected]>
    Reviewed-by: Michael Stahl <[email protected]>

diff --git a/include/test/unoapi_test.hxx b/include/test/unoapi_test.hxx
index ab680295a60f..27f86881cf89 100644
--- a/include/test/unoapi_test.hxx
+++ b/include/test/unoapi_test.hxx
@@ -67,6 +67,7 @@ enum class TestFilter
     XLSM,
     XLST,
     XLSX,
+    XLSX_2007,
 };
 
 const std::unordered_map<TestFilter, OUString> TestFilterNames{
@@ -111,6 +112,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 f88861a2e8df..67ee904283e8 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 7c9023dee0ca..2d18970e176b 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 -

Reply via email to