uses AxCtrls, OleCtrls, Vcf1;Procedure SavetoExcel(DBGrid1 : TDBGrid);
var
  i, j: integer;
  F1Book1: TF1Book;
  XlsPath: string;
  SaveDialog1 : TSaveDialog;
begin
  SaveDialog1 := TSaveDialog.Create(nil);
  SaveDialog1.Filter := 'Excel files (*.xls)|*.xls';
  if SaveDialog1.Execute = True then
    XlsPath := SaveDialog1.FileName
  else
    Exit;
  try
    F1Book1 := TF1Book.Create(nil);
    for i := 1 to Dbgrid1.Columns.Count do
    begin
      F1Book1.TextRC[1,i] := Dbgrid1.Columns.Items[i-1].Title.Caption;
    end;
    Dbgrid1.DataSource.DataSet.First;
    j := 1;
    while not Dbgrid1.DataSource.DataSet.Eof do
    begin
      j := j + 1;
      for i := 1 to Dbgrid1.Columns.Count do
      begin
        F1Book1.TextRC[j,i] :=
          Dbgrid1.DataSource.DataSet.FieldByName(Dbgrid1.Columns[i-1].FieldName).AsString;
      end;
      Dbgrid1.DataSource.DataSet.Next;
    end;
    F1Book1.Write(Trim(XlsPath)+'.xls',F1FileExcel5);
  finally
    F1Book1.Free;
  end;
  SaveDialog1.Free;
  F1Book1.Free;
end;