1.
procedure TForm1.DBgridToExcel(bsGrid:TDBGrid;filename:string); //DBGrid输出到Excel
var
v,sheet: Variant;
i,j:integer;
begin
SaveDialog1.Filter:='*.xls';
SaveDialog1.FileName:=filename;
if SaveDialog1.Execute then
try
v:=CreateOleObject('Excel.Application'); //创建ole对象
v.WorkBooks.Add;
Sheet:=v.WorkBooks[1].WorkSheets[1];
bsGrid.DataSource.DataSet.first;
i:=1;
While Not(bsGrid.DataSource.DataSet.Eof) Do
Begin
For j:=1 To bsGrid.FieldCount Do
if bsGrid.Columns[j-1].Visible=true then
begin
Sheet.Cells[i+1,j]:= bsGrid.Fields[j-1].AsString ; //+1保留列标题
Sheet.Cells[1,j]:= bsGrid.Fields[j-1].FieldName ;
end;
bsGrid.DataSource.DataSet.Next ;
i := i+1 ;
End ;