procedure TForm1.SaveToExcelFile(DbName: TDbGrid);
var
  ExcelApp: Variant;
  Page: Variant;
  i, j: Integer;
  SaveDialog: TSaveDialog;
  BM: TBookMark;
  StrSaveFile: string;
begin
  if DbName.DataSource.DataSet.IsEmpty then   //ÅжÏTDBGrid×é¼þÖÐÊÇ·ñÓÐÊý¾Ý
  begin
    messagebox(application.Handle,'ûÓÐÈκÎÊý¾Ý,²»ÄܽøÐб£´æ','¾¯¸æ',mb_ok);
    abort;
  end;
  SaveDialog:=TSaveDialog.Create(Nil);  //´´½¨Ò»¸öTSaveDialog×é¼þ£¬ÓÃÓÚ±£´æµ¼ÈëµÄÊý¾Ý
  SaveDialog.Filter := '*.xls|*.XLS';   //ÉèÖÃÀ©Õ¹ÃûΪxls
  SaveDialog.Execute;  //´ò¿ª±£´æ¶Ô»°¿ò
  StrSaveFile:=SaveDialog.FileName;   //»ñÈ¡Îļþ±£´æµÄĿ¼
  if length(StrSaveFile)=0 then exit;  //Èç¹ûĿ¼Ϊ¿Õ£¬ÔòÍ˳ö³ÌÐò
  try
    screen.Cursor:=crHourGlass;  //ÉèÖÃÆÁÄ»µÄÖ¸ÕëÐÍ×´
    try  //´´½¨Ò»¸öExcel±í¶ÔÏ²¢ÉèÖÃExcel±íÖбêÇ©Ò³µÄÃû³Æ
      ExcelApp := CreateOleObject('Excel.Application');
      ExcelApp.WorkBooks.Add(-4167);
      ExcelApp.WorkBooks[1].WorkSheets[1].Name := 'Êý¾Ý¿âÊý¾Ý';
      Page := ExcelApp.WorkBooks[1].WorkSheets['Êý¾Ý¿âÊý¾Ý'];
      j := 1;
    except
      MessageBox(GetActiveWindow,'ÇëÈ·ÈÏÊÇ·ñ°²×°ÁËMircorsoft Excel¡£','Ìáʾ',MB_OK+MB_ICONINFORMATION);
      Exit;
    end;
    with DbName.DataSource.DataSet do
    begin
      BM := GetBook;  //ÉèÖÃGOTOÑ­»·
      DisableControls;
      //½«TDBGrid±íÖеıêÌâ²åÈëµ½Excel±íÖеÄÊ×ÐÐ
      for I:=0 to DbName.Columns.Count-1 do
      begin
        if DbName.Columns[i].Visible=False then
          Continue;
        Page.Cells[j,i+1] := DbName.Columns[i].Title.Caption;
        Page.Cells[j,i+1].Font.Bold := True;  //ÉèÖÃ×ÖÌåΪ´ÖÌå
      end;
      Inc(j);  //Excel±íÖеÄÏÂÒ»ÐÐ
      First;  //½«Ö¸Õë·µ»Øµ½TDBGrid±íÖÐÊý¾ÝµÄÊ×ÐÐ
      while not Eof do
      begin
        for i:=0 to DbName.Columns.Count-1 do
        begin
          if DbName.Columns[i].Visible=False then
            Continue;
          //½«Ö¸¶¨ÐÐÖÐÿÁеÄÊý¾Ý£¬Ìí¼Óµ½Excel±íÖÐ
          Page.Cells[j,i+1] := trim(DbName.DataSource.DataSet.Fieldbyname(DbName.Columns[i].FieldName).asstring);
        end;
        Inc(j);  //Excel±íÖеÄÏÂÒ»ÐÐ
        Next;  //TDBGrid±íÖеÄÏÂÒ»Ìõ¼Ç¼
      end;
      GotoBook(BM);
      FreeBook(BM);
      EnableControls;
    end;
    ExcelApp.activeworkbook.saveas(StrSaveFile);  //½«Excel±í±£´æµ½Ö¸¶¨µÄĿ¼ÏÂ
    Application.ProcessMessages;
    ExcelApp.Application.Quit;
  finally
    SaveDialog.Free;
    screen.Cursor:=crDefault;
  end;
end;procedure TForm1.Button1Click(Sender: TObject);
begin
  SaveToExcelFile(DbGrid1);
end;