sc/source/filter/oox/condformatbuffer.cxx | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-)
New commits: commit b1ba84efc38821d5d272448cb34af7519306b8ce Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Tue Jan 26 19:10:35 2016 +0100 handle entries with num type and formula during OOXML import, tdf#94626 Change-Id: I0d48120f2b128fb898c7cc55cc41ce52378851dc Reviewed-on: https://gerrit.libreoffice.org/21820 Tested-by: Jenkins <c...@libreoffice.org> Reviewed-by: Markus Mohrhard <markus.mohrh...@googlemail.com> diff --git a/sc/source/filter/oox/condformatbuffer.cxx b/sc/source/filter/oox/condformatbuffer.cxx index 4ab87ed..4aeeaa9 100644 --- a/sc/source/filter/oox/condformatbuffer.cxx +++ b/sc/source/filter/oox/condformatbuffer.cxx @@ -104,18 +104,30 @@ const sal_uInt16 BIFF12_CFRULE_ABOVEAVERAGE = 0x0004; const sal_uInt16 BIFF12_CFRULE_BOTTOM = 0x0008; const sal_uInt16 BIFF12_CFRULE_PERCENT = 0x0010; +bool isValue(const OUString& rStr, double& rVal) +{ + sal_Int32 nEnd = -1; + rVal = rtl::math::stringToDouble(rStr.trim(), '.', ',', nullptr, &nEnd); + + if (nEnd < rStr.getLength()) + return false; + + return true; +} + void SetCfvoData( ColorScaleRuleModelEntry* pEntry, const AttributeList& rAttribs ) { OUString aType = rAttribs.getString( XML_type, OUString() ); + OUString aVal = rAttribs.getString(XML_val, OUString()); - if( aType == "formula" ) + double nVal = 0.0; + bool bVal = isValue(aVal, nVal); + if( !bVal || aType == "formula" ) { - OUString aFormula = rAttribs.getString( XML_val, OUString() ); - pEntry->maFormula = aFormula; + pEntry->maFormula = aVal; } else { - double nVal = rAttribs.getDouble( XML_val, 0.0 ); pEntry->mnVal = nVal; } @@ -357,11 +369,9 @@ void IconSetRule::importAttribs( const AttributeList& rAttribs ) void IconSetRule::importFormula(const OUString& rFormula) { ColorScaleRuleModelEntry& rEntry = maEntries.back(); - if (rEntry.mbNum || - rEntry.mbPercent || - rEntry.mbPercentile) + double nVal = 0.0; + if ((rEntry.mbNum || rEntry.mbPercent || rEntry.mbPercentile) && isValue(rFormula, nVal)) { - double nVal = rFormula.toDouble(); rEntry.mnVal = nVal; } else if (!rFormula.isEmpty()) _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits