tdf#142905 XLSX import: don't trim leading spaces in formula cell
When importing an XLSX file, there was a discrepancy between the
read and recalculated cell values if it contains leading/ending
spaces. With this fix, trimming in worksheet files is only applied
to elements that contain a parameter and do not have a
space="preserved" parameter.
Change-Id: I91e09eaa3cb79537ddbed36e1124e4afd124d8f0
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/154674
Tested-by: László Németh <nemeth@numbertext.org>
Reviewed-by: László Németh <nemeth@numbertext.org>
(cherry picked from commit 864e5cdb0cc91b9bf2ea0428590094a8901b33ed)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/154914
Tested-by: Jenkins
diff --git a/sc/qa/unit/data/xlsx/tdf142905.xlsx b/sc/qa/unit/data/xlsx/tdf142905.xlsx
new file mode 100644
index 0000000..b6e8296
--- /dev/null
+++ b/sc/qa/unit/data/xlsx/tdf142905.xlsx
Binary files differ
diff --git a/sc/qa/unit/subsequent_filters_test4.cxx b/sc/qa/unit/subsequent_filters_test4.cxx
index 646b1e6..27d9d6f 100644
--- a/sc/qa/unit/subsequent_filters_test4.cxx
+++ b/sc/qa/unit/subsequent_filters_test4.cxx
@@ -1918,6 +1918,18 @@ CPPUNIT_TEST_FIXTURE(ScFiltersTest4, testTdf155402)
CPPUNIT_ASSERT_EQUAL(OUString("/[tdf155402.xlsx]Sheet1"), aFilename);
}
CPPUNIT_TEST_FIXTURE(ScFiltersTest4, testTdf142905)
{
createScDoc("xlsx/tdf142905.xlsx");
ScDocument* pDoc = getScDoc();
// Without the fix, trims the spaces in cell C1 after reading the XLSX file.
// After recalculation it is fixed.
// - Expected: " 3M "
// - Actual : "3M"
CPPUNIT_ASSERT_EQUAL(OUString(" 3M "), pDoc->GetString(2, 0, 0));
}
ScFiltersTest4::ScFiltersTest4()
: ScModelTestBase("sc/qa/unit/data")
{
diff --git a/sc/source/filter/oox/excelhandlers.cxx b/sc/source/filter/oox/excelhandlers.cxx
index ab39116..77b5dda 100644
--- a/sc/source/filter/oox/excelhandlers.cxx
+++ b/sc/source/filter/oox/excelhandlers.cxx
@@ -30,9 +30,11 @@ WorkbookFragmentBase::WorkbookFragmentBase(
{
}
// tdf142905: Change mbEnableTrimSpace default value is false,
// because it will not trim members that do not have an attribute.
WorksheetFragmentBase::WorksheetFragmentBase(
const WorksheetHelper& rHelper, const OUString& rFragmentPath ) :
FragmentHandler2( rHelper.getOoxFilter(), rFragmentPath ),
FragmentHandler2( rHelper.getOoxFilter(), rFragmentPath, false ),
WorksheetHelper( rHelper )
{
}