diff options
author | Eike Rathke <erack@redhat.com> | 2018-09-05 12:41:39 +0200 |
---|---|---|
committer | Markus Mohrhard <markus.mohrhard@googlemail.com> | 2018-09-06 17:53:02 +0200 |
commit | 68817986a428bafc433528c49d99df5b58c7204d (patch) | |
tree | 3f6409ec3f7abebc5bf7e19388ace886a6c17227 | |
parent | d322bab9ab453f5012d9760b245bf1be624f324a (diff) |
Resolves: tdf#118850 disentangle the twisted wrong cell type vs format type
Change-Id: Idb5267c9bc50e8844654c2f2cd0d123fcbb7aa12
Reviewed-on: https://gerrit.libreoffice.org/60026
Reviewed-by: Eike Rathke <erack@redhat.com>
Tested-by: Jenkins
(cherry picked from commit ede27cf598ed2aef41b9552b2c787ef8331400fc)
Reviewed-on: https://gerrit.libreoffice.org/60033
Reviewed-by: Markus Mohrhard <markus.mohrhard@googlemail.com>
-rw-r--r-- | sc/source/filter/xml/xmlimprt.cxx | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/sc/source/filter/xml/xmlimprt.cxx b/sc/source/filter/xml/xmlimprt.cxx index 86434cd10c0c..ca24d77523b5 100644 --- a/sc/source/filter/xml/xmlimprt.cxx +++ b/sc/source/filter/xml/xmlimprt.cxx @@ -1293,12 +1293,18 @@ void ScXMLImport::SetType(const uno::Reference <beans::XPropertySet>& rPropertie sal_Int32 nCurrentCellType( GetNumberFormatAttributesExportHelper()->GetCellType( rNumberFormat, sCurrentCurrency, bIsStandard) & ~util::NumberFormat::DEFINED); - if ((nCellType != nCurrentCellType) && !((nCellType == util::NumberFormat::NUMBER && - ((nCurrentCellType == util::NumberFormat::SCIENTIFIC) || - (nCurrentCellType == util::NumberFormat::FRACTION) || - (nCurrentCellType == util::NumberFormat::LOGICAL) || - (nCurrentCellType == 0))) || (nCurrentCellType == util::NumberFormat::TEXT)) && !((nCellType == util::NumberFormat::DATETIME) && - (nCurrentCellType == util::NumberFormat::DATE))) + // If the (numeric) cell type (number, currency, date, time, boolean) + // is different from the format type then for some combinations we may + // have to apply a format, e.g. in case the generator deduced format + // from type and did not apply a format but we don't keep a dedicated + // type internally. Specifically this is necessary if the cell type is + // not number but the format type is (i.e. General). Currency cells + // need extra attention, see calls of ScXMLImport::IsCurrencySymbol() + // and description within there and ScXMLImport::SetCurrencySymbol(). + if ((nCellType != nCurrentCellType) && + (nCellType != util::NumberFormat::NUMBER) && + (nCellType != util::NumberFormat::TEXT) && + (bIsStandard || (nCellType == util::NumberFormat::CURRENCY))) { if (!xNumberFormats.is()) { |