sc/qa/unit/data/xlsx/tdf100154.xlsx |binary sc/qa/unit/subsequent_filters_test.cxx | 13 +++++++++++++ sc/source/core/tool/address.cxx | 1 + 3 files changed, 14 insertions(+)
New commits: commit 20d62f4a29798fe35d8a89902d8662b9a3f444bf Author: Vladislav Tarakanov <[email protected]> AuthorDate: Sun Feb 8 11:04:09 2026 +0400 Commit: Mike Kaganski <[email protected]> CommitDate: Sun Feb 8 10:47:28 2026 +0100 tdf#100154 Treat non-ASCII characters as non-digits In the original implementation, when importing, sheet names consisting only of non-ASCII characters separated by '.' are treated as strings, not references. However, MS Office handles such names and saves them in .xlsx files, causing formulas with references to such sheets imported into LO to produce incorrect values after recalculation. This fix consists of treating non-ASCII characters as non-digits. Change-Id: I4427692c7293e1f41ed48a70b3b53fd180173299 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/198775 Tested-by: Jenkins Reviewed-by: Mike Kaganski <[email protected]> diff --git a/sc/qa/unit/data/xlsx/tdf100154.xlsx b/sc/qa/unit/data/xlsx/tdf100154.xlsx new file mode 100644 index 000000000000..8b6c8dd536d8 Binary files /dev/null and b/sc/qa/unit/data/xlsx/tdf100154.xlsx differ diff --git a/sc/qa/unit/subsequent_filters_test.cxx b/sc/qa/unit/subsequent_filters_test.cxx index 51cb491b77cd..458a673edeae 100644 --- a/sc/qa/unit/subsequent_filters_test.cxx +++ b/sc/qa/unit/subsequent_filters_test.cxx @@ -1587,6 +1587,19 @@ CPPUNIT_TEST_FIXTURE(ScFiltersTest, testRowIndex1BasedXLSX) CPPUNIT_ASSERT_EQUAL(u"Third line."_ustr, aStr); } +CPPUNIT_TEST_FIXTURE(ScFiltersTest, testNonAsciiWithDotXLSX) +{ + createScDoc("xlsx/tdf100154.xlsx"); + ScDocument* pDoc = getScDoc(); + + OUString aStr = pDoc->GetFormula(0, 0, 0); + CPPUNIT_ASSERT_EQUAL(u"=$'Новый.лист'.A1"_ustr, aStr); + + pDoc->CalcAll(); + double aValue = pDoc->GetValue(ScAddress(0, 0, 0)); + CPPUNIT_ASSERT_EQUAL(5.0, aValue); +} + ScFiltersTest::ScFiltersTest() : ScModelTestBase(u"sc/qa/unit/data"_ustr) { diff --git a/sc/source/core/tool/address.cxx b/sc/source/core/tool/address.cxx index 4c6453cf53e4..5714cc91b3e1 100644 --- a/sc/source/core/tool/address.cxx +++ b/sc/source/core/tool/address.cxx @@ -400,6 +400,7 @@ static const sal_Unicode * lcl_XL_ParseSheetRef( const sal_Unicode* start, { // non ASCII character is allowed. ++p; + only_digits = false; } else break;
