源码在此
 Try
  Excel:=CreateOleObject('Excel.Application');
  Except
   Application.MessageBox('出现错误,请检查电脑是否安装excel软件','提示',MB_OK);
   ExcelPanel.Visible:=False;
   Exit;
  End;
  Excel.Visible :=false;
  Excel.Workbooks.Add;
  Excel.Workbooks[1].WorkSheets[1].Name :='test';
  Sheet:=Excel.Workbooks[1].WorkSheets[1];
  StopExcel:=False;
   for I:=0 to D_Dbgrid.Columns.Count-1 do
    Begin
//     Sheet.Columns[i+1].ColumnWidth:=D_Dbgrid.Columns[i].Width;
     sheet.cells[1,I+1]:=D_Dbgrid.Columns[i].Title.Caption;
    End;
   Gau.MaxValue:=C_client.RecordCount;
   gau.Progress:=0;
   C_client.First;
   x:=1;
   While not C_client.Eof do
   Begin
     for I:=0 to D_Dbgrid.Columns.Count-1 do
      Begin
       Sheet.cells[x+1,I+1]:=D_Dbgrid.Columns.Items[i].Field.AsString;
      End;
      gau.Progress:=gau.Progress+1;
      x:=x+1;
      C_Client.Next;
      Application.ProcessMessages;
      If StopExcel then
       Begin
        If Application.MessageBox('是否停止导出数据库?','提示',MB_yesno+MB_iconerror)=idyes then
         Begin
          Break;
         End
         Else
          StopExcel:=False;
       End;
    End;
   try
    Excel.ActiveWorkbook.SaveAs(filename);
   Except
    Excel.Quit;
   End;
   Excel.Quit;
   ExcelPanel.Visible:=False;