sc/source/filter/oox/sheetdatabuffer.cxx |   19 +++++++++++--------
 1 file changed, 11 insertions(+), 8 deletions(-)

New commits:
commit 5374c04a89e1720490a3625dfd95406c2d60c0cd
Author: Eike Rathke <er...@redhat.com>
Date:   Sat Sep 30 20:31:34 2017 +0200

    Resolves: tdf#100822 use sax::Converter::parseDateTime() for 'd' ISO 8601 
date
    
    Instead of squeezing the string through the locale dependent
    number parser (which should force '.' Time100SecSeparator for 'T'
    ISO 8601 but apparently doesn't yet) that is a bottle neck anyway.
    
    Change-Id: I70f74e680322a715c9cc658c8be033620d9798e3

diff --git a/sc/source/filter/oox/sheetdatabuffer.cxx 
b/sc/source/filter/oox/sheetdatabuffer.cxx
index 67c768c0a10a..93bfb74c473b 100644
--- a/sc/source/filter/oox/sheetdatabuffer.cxx
+++ b/sc/source/filter/oox/sheetdatabuffer.cxx
@@ -48,6 +48,7 @@
 #include "documentimport.hxx"
 #include "formulabuffer.hxx"
 #include <numformat.hxx>
+#include <sax/tools/converter.hxx>
 
 namespace oox {
 namespace xls {
@@ -206,15 +207,17 @@ void SheetDataBuffer::setErrorCell( const CellModel& 
rModel, sal_uInt8 nErrorCod
 
 void SheetDataBuffer::setDateCell( const CellModel& rModel, const OUString& 
rDateString )
 {
-    ScDocument& rDoc = getScDocument();
-    SvNumberFormatter* pFormatter = rDoc.GetFormatTable();
-
-    double fValue = 0.0;
-    sal_uInt32 nFormatIndex = 0;
-    bool bValid = pFormatter->IsNumberFormat( rDateString, nFormatIndex, 
fValue );
+    css::util::DateTime aDateTime;
+    if (!sax::Converter::parseDateTime( aDateTime, nullptr, rDateString))
+    {
+        SAL_WARN("sc.filter", "SheetDataBuffer::setDateCell - could not parse: 
" << rDateString);
+        // At least don't lose data.
+        setStringCell( rModel, rDateString);
+        return;
+    }
 
-    if(bValid)
-        setValueCell( rModel, fValue );
+    double fSerial = getUnitConverter().calcSerialFromDateTime( aDateTime);
+    setValueCell( rModel, fSerial);
 }
 
 void SheetDataBuffer::createSharedFormula(const ScAddress& rAddr, const 
ApiTokenSequence& rTokens)
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to