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!