Tôi muốn biết liệu có ai đó có thể xuất dữ liệu từ DBGrid sang Excel không? Tôi đang sử dụng Delphi 7, Excel 2007 và ADO.
Mọi trợ giúp sẽ được đánh giá cao.Xuất dữ liệu từ DBGrid sang Excel
5
A
Trả lời
10
Nếu bạn muốn có một xuất nhanh dữ liệu thô, chỉ cần xuất recordset của bạn (ADODataset.recordset) với một cái gì đó như thế:
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
Và nếu chúng ta muốn xuất một ClientDataset sang Excel thì chúng ta làm gì? – Amin
+0
Nếu bạn không có bản ghi, bạn phải lặp lại tập dữ liệu của mình và viết các ô accceling excel. ví dụ: ovWS.Cells [RowIndex, ColumnIndex] .Value: = Dataset.FieldByName ('foo'). AsString; –
Đừng xuất DBGrid, xuất dữ liệu http://stackoverflow.com/a/16642049/1699210 chỉ cần điền arrData từ ví dụ đã cho với các giá trị trường. – bummi
Tôi cũng sẽ đưa ra tham chiếu mà Bummi đưa ra. Để sử dụng phương pháp tiếp cận mảng biến thể, bạn phải biết có bao nhiêu hàng bạn có trong truy vấn. Nếu không nó có thể đơn giản hơn để sử dụng phương pháp tiếp cận csv mà tôi đã đưa ra trong câu hỏi đó. –
@ No'amNewman tùy thuộc vào datataypes cách tiếp cận csv có thể gây ra nhiều rắc rối hơn trong hội tụ, ví dụ: Giá trị ngày giờ ... – bummi