常常用到的功能,将DBGrid导出到Excel
procedure Tfmpcxt.OutToExcel(sender:TDBGrid);
var
i,j,m:integer;
ExcelApp:Variant;
begin
if TDBGrid(Sender).DataSource=nil then exit;
if TDBGrid(Sender).DataSource.DataSet=nil then exit;
if not TDBGrid(Sender).DataSource.DataSet.Active then exit;
if TDBGrid(Sender).DataSource.DataSet.RecordCount<=0 then exit;
// FHint:=TfrmFlash.Create(nil);
// showmessage('1');
// scExcelExport1:=TscExcelExport.Create(application);
try
// Fhint.Show;
//Fhint.Update;
ExcelApp := CreateOleObject( 'Excel.Application' );
ExcelApp.WorkBooks.Add;
ExcelApp.WorkSheets.Add;
ExcelApp.Visible:=true;
j:=2;
with TDBGrid(Sender).DataSource.DataSet do
begin
TDBGrid(Sender).DataSource.DataSet.First;
TDBGrid(Sender).DataSource.DataSet.DisableControls;
for i:=0 to TDBGrid(Sender).Columns.Count-1 do
begin
for m:=0 to TDBGrid(Sender).Columns.Count-1 do
begin
if TDBGrid(Sender).DataSource.DataSet.Fields[i].FieldName=TDBGrid(Sender).Columns[m].FieldName then
ExcelApp.WorkSheets[1].Cells[1,i+1].Value :=TDBGrid(Sender).Columns[m].Title.Caption;
end;
end;
while not TDBGrid(Sender).DataSource.DataSet.Eof do
begin
for i:=0 to FieldCount-1 do
begin
ExcelApp.WorkSheets[1].Cells[j,i+1].Value :=Fields[i].AsVariant;
end;
Next;
j:=j+1;
end;
end;
finally
//scExcelExport1.free;
TDBGrid(Sender).DataSource.DataSet.EnableControls;
// Fhint.Free;
end;
end;