Chciałem się dowiedzieć, czy ktoś w jaki sposób mogę eksportować dane z DBGrid do Excela? Używam Delphi 7, Excel 2007 i ADO.
Każda pomoc zostanie doceniona.Eksportowanie danych z DBGrid do Excela
5
A
Odpowiedz
10
Jeśli chcesz szybki eksport danych surowych, po prostu wyeksportować rekordów (ADODataset.recordset) coś takiego:
procedure ExportRecordsetToMSExcel(DestName: string; Data: _Recordset);
var
ovExcelApp: OleVariant;
ovExcelWorkbook: OleVariant;
ovWS: OleVariant;
ovRange: OleVariant;
begin
ovExcelApp := CreateOleObject('Excel.Application'); //If Excel isnt installed will raise an exception
try
ovExcelWorkbook := ovExcelApp.WorkBooks.Add;
ovWS := ovExcelWorkbook.Worksheets.Item[1]; // go to first worksheet
ovWS.Activate;
ovWS.Select;
ovRange := ovWS.Range['A1', 'A1']; //go to first cell
ovRange.Resize[Data.RecordCount, Data.Fields.Count];
ovRange.CopyFromRecordset(Data, Data.RecordCount, Data.Fields.Count); //this copy the entire recordset to the selected range in excel
ovWS.SaveAs(DestName, 1, '', '', False, False);
finally
ovExcelWorkbook.Close(SaveChanges := False);
ovWS := Unassigned;
ovExcelWorkbook := Unassigned;
ovExcelApp := Unassigned;
end;
end;
+0
A jeśli chcemy eksportować ClientDataset do Excela, to co robimy? – Amin
+0
Jeśli nie masz zestawu rekordów, musisz powtórzyć swój zestaw danych i napisać excel dostęp do komórek. na przykład: ovWS.Cells [RowIndex, ColumnIndex] .Value: = Dataset.FieldByName ("foo"). AsString; –
Nie wyeksportować DBGrid, wyeksportować zbiór danych http://stackoverflow.com/a/16642049/1699210 po prostu wypełnij arrData z podanego przykładu wartościami pola. – bummi
Ja też zamierzałem podać odniesienie, które dał Bummi. Aby użyć metody tablicy variant, musisz wiedzieć, ile wierszy masz w zapytaniu. W przeciwnym razie może być prostsze korzystanie z metody csv, którą podałem w tym pytaniu. –
@ No'amNewman w zależności od dat, w których metoda csv może przysporzyć więcej problemów w konwersjach, np. Wartości DateTime ... – bummi