Hello
I need to dump a dataset into an Excel file. I have an issue with Delphi TDateTime conversion.
Dataset TDatetime 20/07/1974 value will be converted to Excel number 27230 while Dataset TDatetime 01/01/1900 value will be converted to Excel number 2 (should be 1).
How can I fix this ?
procedure RunuReport(ds: Tdataset; header: Boolean = true; fieldlist: TStrings =
nil);
var
xls: TXlsFile;
Row, Col: integer;
Fmt: TFlxFormat;
DateXF, DateTimeXF: integer;
begin
xls := TXlsFile.Create(1, TExcelFileFormat.v2019, true);
try
if Header then
begin
Row := 2;
for Col := 1 to ds.FieldCount do
xls.SetCellValue(1, Col, ds.Fields[col - 1].FieldName);
end else Row := 1;
//Now loop over all records and send them to the file.
ds.First;
while not ds.Eof do
begin
for Col := 1 to ds.FieldCount do
begin
case ds.Fields[Col - 1].DataType of
TFieldType.ftDate,TFieldType.ftDateTime:
begin
xls.SetCellValue(Row, Col, TFlxDateTime.ToOADate(ds.Fields[col - 1].AsDateTime,false));
end;
else
begin
xls.SetCellValue(Row, Col, ds.Fields[col - 1].Value);
end;
end;
end;
ds.Next;
Inc(Row);
end;
xls.Save('test.xlsx');
finally
xls.Free;
end;
end;