summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEike Rathke <erack@redhat.com>2018-09-05 12:41:39 +0200
committerEike Rathke <erack@redhat.com>2018-09-05 14:21:40 +0200
commitede27cf598ed2aef41b9552b2c787ef8331400fc (patch)
tree3a896a9ab8fb7e6b7e0bbbedfcb389b404e8cd3b
parent229483707c3ccb48d008d37f856bbeb6df199a90 (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
-rw-r--r--sc/source/filter/xml/xmlimprt.cxx18
1 files changed, 12 insertions, 6 deletions
diff --git a/sc/source/filter/xml/xmlimprt.cxx b/sc/source/filter/xml/xmlimprt.cxx
index 631f925e4447..0dc6d755d84f 100644
--- a/sc/source/filter/xml/xmlimprt.cxx
+++ b/sc/source/filter/xml/xmlimprt.cxx
@@ -1295,12 +1295,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())
{