当我不得不将DBGrid传输到Excele时,我说我应该在这里分配它。让他们使用他们需要的东西,如果有错误,或者如果您报告更简单的方法,我将很高兴。
unit DbGridToExcel;
interface
uses
comobj, Vcl.DBGrids, Data.DB, System.SysUtils;
type
TAutoFit = record
public
Baslangic: String;
Bitis: String;
end;
type
TExcel = record
private
public
WorkSheetsName: String;
Folder: String;
AutoFit: TAutoFit;
Bold: String;
procedure ExcExport(Grid: TDBGrid);
procedure ExcExportDs(Data: TDataset);
end;
implementation
procedure TExcel.ExcExport(Grid: TDBGrid);
var
Excel, Workbook, Sheet: Variant;
i, a: integer;
begin
Excel := CreateOleObject('EXCEL.APPLICATION');
Workbook := Excel.workbooks.Add;
Sheet := Workbook.worksheets[1];
Grid.DataSource.DataSet.First;
for i := 1 to Grid.Columns.Count do
begin
Sheet.cells[1, i] := Grid.Columns[i - 1].FieldName;
end;
for I := 2 to Grid.DataSource.DataSet.RecordCount + 1 do
begin
for a := 0 to Grid.Columns.Count - 1 do
begin
Sheet.cells[i, a + 1] := Grid.DataSource.DataSet.Fields[a].AsString;
end;
Grid.DataSource.DataSet.Next;
end;
if (Bold <> '') then
Excel.Range[Bold].Font.Bold := True;
if (Trim(AutoFit.Baslangic) <> '') and (Trim(AutoFit.Bitis) <> '') then
Excel.Range[AutoFit.Baslangic, AutoFit.Bitis].EntireColumn.AutoFit;
if WorkSheetsName <> '' then
Excel.workbooks[1].worksheets[1].Name := WorkSheetsName
else
Excel.workbooks[1].worksheets[1].Name := 'yhackup';
if Folder <> '' then
Excel.ActiveWorkBook.SaveAs(Folder);
Excel.visible := True;
end;
procedure TExcel.ExcExportDs(Data: TDataset);
var
Excel, Workbook, Sheet: Variant;
i, a: integer;
begin
Excel := CreateOleObject('EXCEL.APPLICATION');
Workbook := Excel.workbooks.Add;
Sheet := Workbook.worksheets[1];
Data.First;
for i := 1 to Data.FieldCount do
begin
Sheet.cells[1, i] := Data.Fields[i - 1].FieldName;
end;
for I := 2 to Data.RecordCount + 1 do
begin
for a := 0 to Data.FieldCount - 1 do
begin
Sheet.cells[i, a + 1] := Data.Fields[a].AsString;
end;
Data.Next;
end;
if (Bold <> '') then
Excel.Range[Bold].Font.Bold := True;
if (Trim(AutoFit.Baslangic) <> '') and (Trim(AutoFit.Bitis) <> '') then
Excel.Range[AutoFit.Baslangic, AutoFit.Bitis].EntireColumn.AutoFit;
if WorkSheetsName <> '' then
Excel.workbooks[1].worksheets[1].Name := WorkSheetsName
else
Excel.workbooks[1].worksheets[1].Name := 'yhackup';
if Folder <> '' then
Excel.ActiveWorkBook.SaveAs(Folder);
Excel.visible := True;
end;
end.
以这种方式使用;
var
ex:TExcel;
begin
ex.WorkSheetsName := 'deneme'; // Zorunlu Değil
ex.Folder := 'C:\Users\Yakup\Desktop\Excel-1.xls'; // Zorunlu Değil
ex.AutoFit.Baslangic := 'A1'; // Zorunlu Değil
ex.AutoFit.Bitis := 'Z1'; // Zorunlu Değil
ex.Bold := 'A1:H1'; // Zorunlu Değil
ex.ExcExportDs(Form9.DBGrid1.DataSource.DataSet);
// ex.ExcExport(Form9.DBGrid1);
end;
Copyright © 2014 DelphiW.com 开发 源码 文档 技巧 All Rights Reserved
晋ICP备14006235号-8 晋公网安备 14108102000087号
执行时间: 0.044868946075439 seconds