From 25d59b8e88b78b98e2a98eb593db60f5b18c51d2 Mon Sep 17 00:00:00 2001 From: wp_xxyyzz Date: Tue, 28 Jul 2020 21:30:12 +0000 Subject: [PATCH] fpspreadsheet: Fix meta data reading error of some ods files. Avoid display of metadata zero dates in Excel. git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@7583 8e941d3f-bd1b-0410-a28a-d453659cc2b4 --- .../fpspreadsheet/source/common/fpsutils.pas | 3 ++- .../fpspreadsheet/source/common/xlsxooxml.pas | 18 +++++++++--------- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/components/fpspreadsheet/source/common/fpsutils.pas b/components/fpspreadsheet/source/common/fpsutils.pas index bdaaf5fbb..5ad591a55 100644 --- a/components/fpspreadsheet/source/common/fpsutils.pas +++ b/components/fpspreadsheet/source/common/fpsutils.pas @@ -3185,7 +3185,8 @@ begin // Strip milliseconds? p := Pos('.', s); if (p > 1) then begin - ms := StrToFloat('0' + Copy(s, p, MaxInt), fs); + ms := StrToFloat('0' + Copy(s, p, MaxInt), fs) / SecsPerDay; + s := copy(s, 1, p-1); end else ms := 0; Result := StrToDateTime(s, fs) + ms; diff --git a/components/fpspreadsheet/source/common/xlsxooxml.pas b/components/fpspreadsheet/source/common/xlsxooxml.pas index 24fce1234..e36de0c4b 100644 --- a/components/fpspreadsheet/source/common/xlsxooxml.pas +++ b/components/fpspreadsheet/source/common/xlsxooxml.pas @@ -6144,12 +6144,12 @@ begin '%s', [s])); end; - if book.MetaData.LastModifiedBy = '' then - s := book.MetaData.CreatedBy - else + if book.MetaData.LastModifiedBy <> '' then + begin s := book.MetaData.LastModifiedBy; - AppendToStream(AStream, Format( + AppendToStream(AStream, Format( '%s', [s])); // to do: check xml entities + end; if book.MetaData.DateCreated > 0 then begin @@ -6159,13 +6159,13 @@ begin '%s', [s])); end; - if book.MetaData.DateLastModified <= 0 then - dt := book.MetaData.DateCreated + GetLocalTimeOffset / MinsPerDay - else + if book.MetaData.DateLastModified >0 then + begin dt := book.MetaData.DateLastModified + GetLocalTimeOffset / MinsPerDay; - s := FormatDateTime(ISO8601FormatExtendedUTC, dt); - AppendToStream(AStream, Format( + s := FormatDateTime(ISO8601FormatExtendedUTC, dt); + AppendToStream(AStream, Format( '%s', [s])); + end; AppendToStream(AStream, '');