Eksport daty do pliku *.xlsx (Excela)

0

Witam,
eksportuje zawartość DbGrida, lecz przy kolumnach gdzie przechowuje datę, w pliku excel pokazuje mi liczby np 42028.

Czego to może być efektem?

Kod eksportu:



function RefToCell(ARow, ACol: Integer): string;
begin
  Result := Chr(Ord('A') + ACol - 1) + IntToStr(ARow);
end;

function ZapisdoExcela(const AFileName: TFileName;ostatnio_klikniety_rekord, Ilosc_kolumn, Ilosc_wierszy :integer) :integer;
 
const
  Worksheet = -4167;
var czy_data:integer;
     Excel, Sheet, Data: OLEVariant;
     a,b,I, J : Integer;
     ColumnRange: OleVariant;
 begin
  czy_data:=0;

  Data := VarArrayCreate([1, DataRows, 1, DataCols], varVariant);

  Data[1, 1] := 'Id ';
  Data[1, 2] := 'Nazwa  użytkownika';
  Data[1, 3] := 'Data start';
  Data[1, 4] := 'Godzina start';
  Data[1, 5] := 'Data stop';
  Data[1, 6] := 'Godzina stop';

  J := 1;

//-----------------------WPISWANIE REKORDOW-------------------------------------
  while (not DBGrid1.DataSource.DataSet.Eof) and (J < DataRows) do
  begin
    for I := 0 to DataCols - 1 do
                Data[J + 1, a + 1] := Form_roboczgodziny.DBGrid1.Fields[I].Value;
    Inc(J);
    DBGrid1.DataSource.DataSet.Next;
  end;
//-------------------------------------------------------------------------------------

 try
    Excel := CreateOleObject('Excel.Application');
    except
        MessageBox(Handle,'Brak zainstalowanego Excel-a!', 'U W A G A!', MB_OK + MB_ICONSTOP);
        result:=1;
      Exit;
end;
     result:=0;

  try
    Excel.Visible := False;
    Excel.Workbooks.Add(Worksheet);
    Sheet := Excel.Workbooks[1].WorkSheets[1];
    Sheet.Name := 'Sheet1';

    Sheet.Range[RefToCell(1, 1), RefToCell(DataRows, DataCols)].Value := Data;

    try
      Excel.Workbooks[1].SaveAs(AFilename);
      except
      on E: Exception do
        raise Exception.Create('Data transfer error: ' + E.Message);
    end;
  finally
    if not VarIsEmpty(Excel) then
    begin
      Excel.DisplayAlerts := False;
      Excel.Quit;
      Excel := Unassigned;
      Sheet := Unassigned;
    end;

  end;

 end; 

Wszystko wydaje się dobrze...
Proszę o pomoc!

0

typy Tdate, Tdatetime , Time są tożsame z typem 'double', pewnie stąd masz w arkuszu datę jako liczbę

1 użytkowników online, w tym zalogowanych: 0, gości: 1