diff options
author | László Németh <nemeth@numbertext.org> | 2019-01-07 21:28:29 +0100 |
---|---|---|
committer | László Németh <nemeth@numbertext.org> | 2019-01-08 11:09:11 +0100 |
commit | 7209feef41c3c858476a2ae9795a7d2264c0ffc0 (patch) | |
tree | c3b1ef7d3e0809ebcc46cbab055bf871a63a57c1 | |
parent | 17dd2662ccfa9d04efbea74e5d7548db5b2126d4 (diff) |
tdf#122224 DOCX import: fix formula field syntax
by removing the DOCX custom number format string
which caused a syntax error message here instead
of the formula calculation.
Change-Id: Ia643e966440117871f6b4ddceab610100ac34138
Reviewed-on: https://gerrit.libreoffice.org/65945
Tested-by: Jenkins
Reviewed-by: László Németh <nemeth@numbertext.org>
-rw-r--r-- | sw/qa/extras/ooxmlimport/data/tdf122224.docx | bin | 0 -> 19306 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlimport/ooxmlimport2.cxx | 11 | ||||
-rw-r--r-- | writerfilter/source/dmapper/DomainMapper_Impl.cxx | 9 |
3 files changed, 20 insertions, 0 deletions
diff --git a/sw/qa/extras/ooxmlimport/data/tdf122224.docx b/sw/qa/extras/ooxmlimport/data/tdf122224.docx Binary files differnew file mode 100644 index 000000000000..14518403cae1 --- /dev/null +++ b/sw/qa/extras/ooxmlimport/data/tdf122224.docx diff --git a/sw/qa/extras/ooxmlimport/ooxmlimport2.cxx b/sw/qa/extras/ooxmlimport/ooxmlimport2.cxx index 347fa0c96aeb..e29432694e9a 100644 --- a/sw/qa/extras/ooxmlimport/ooxmlimport2.cxx +++ b/sw/qa/extras/ooxmlimport/ooxmlimport2.cxx @@ -295,6 +295,17 @@ DECLARE_OOXMLIMPORT_TEST(testTdf115094v2, "tdf115094v2.docx") CPPUNIT_ASSERT(getProperty<bool>(getShapeByName("Grafik 19"), "IsLayoutInCell")); } +DECLARE_OOXMLIMPORT_TEST(testTdf122224, "tdf122224.docx") +{ + uno::Reference<text::XTextTablesSupplier> xTextTablesSupplier(mxComponent, uno::UNO_QUERY); + uno::Reference<container::XIndexAccess> xTables(xTextTablesSupplier->getTextTables(), + uno::UNO_QUERY); + uno::Reference<text::XTextTable> xTable(xTables->getByIndex(0), uno::UNO_QUERY); + uno::Reference<text::XTextRange> xCell(xTable->getCellByName("A2"), uno::UNO_QUERY_THROW); + // This was "** Expression is faulty **", because of the unnecessary DOCX number format string + CPPUNIT_ASSERT_EQUAL(OUString("2000"), xCell->getString()); +} + // tests should only be added to ooxmlIMPORT *if* they fail round-tripping in ooxmlEXPORT CPPUNIT_PLUGIN_IMPLEMENT(); diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx b/writerfilter/source/dmapper/DomainMapper_Impl.cxx index 244969372080..6e2fc620fc93 100644 --- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx +++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx @@ -3401,6 +3401,15 @@ void DomainMapper_Impl::handleFieldFormula uno::Reference< beans::XPropertySet > const& xFieldProperties) { OUString command = pContext->GetCommand().trim(); + + // Remove number formatting from \# to end of command + // TODO: handle custom number formatting + sal_Int32 delimPos = command.indexOf("\\#"); + if (delimPos != -1) + { + command = command.replaceAt(delimPos, command.getLength() - delimPos, "").trim(); + } + // command must contains = and at least another char if (command.getLength() < 2) return; |