用实例详述:

unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DBGridEhGrouping, StdCtrls, GridsEh, DBGridEh,DBGridEhImpExp,EhLibBDE;

//注:需要引用DBGridEhImpExp,EhLibBDE这两个单元

type
  TForm2 = class(TForm)
    dbgrdh1: TDBGridEh;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
    function DBGridEhToExportFile(dbgrd:TDBGridEh;filenames:string='导出的文件'):Boolean;
  public
    { Public declarations }
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

procedure TForm2.Button1Click(Sender: TObject);
begin
    DBGridEhToExportFile(dbgrdh1,'hello');

//如果调用导出函数时希望使用声明函数时默认文件名,则调用的写法可以这样:DBGridEhToExportFile(dbgrdh1);

end;

function TForm2.DBGridEhToExportFile(dbgrd: TDBGridEh;
  filenames: string='导出的文件'): Boolean;
var
  savedialog1:TSaveDialog;//对话框将手动创建,使用完成后手动销毁
  ExpClass:TDBGridEhExportClass;

{TDBGridEhExportClass:导出文件类型,可以为以下值:TDBGridEhExportAsText, TDBGridEhExportAsCsv, TDBGridEhExportAsHTML, TDBGridEhExportAsRTF, TDBGridEhExportAsVCLDBIF,TDBGridEhExportAsXLS.}
  Ext:string;
begin
  Result:=True;
   try
    savedialog1:=TSaveDialog.Create(nil);
    with savedialog1 do
    begin
       Filter:='EXCEL文件(*.xls)|*.xls|NOTEPAD文件(*.txt)|*.txt';//对话框的过滤选项
       FileName:=filenames;//将要保存的文件的名称
       Title:='保存导出文件';//对话框的窗口标题
       FilterIndex:=1;;//对话框的默认文件类型,在此例中是EXCEL文件格式
    end;
    if (dbgrd is tDBGridEh) then
    begin
      if savedialog1.Execute(Self.Handle) then

      begin
        case savedialog1.FilterIndex of
          1:
          begin
            ExpClass:=TDBGridEhExportAsXLS;//导出EXCEL格式数据
            Ext:='XLS';
          end;
          2:
          begin
            ExpClass:=TDBGridEhExportAsText;//导出TEXT格式数据

            Ext:='txt';
          end;
        else
        begin
          ExpClass:=nil;
          Ext:='';
        end;
        end;
        if ExpClass<>nil then
        begin
          if UpperCase(Copy(savedialog1.FileName,Length(savedialog1.FileName)-2,3))<>UpperCase(Ext) then

//判断:文件名后有无文件格式的后缀,没有的话加上
          begin
             savedialog1.FileName:=savedialog1.FileName+'.'+ext;
          end;
          if SysUtils.FileExists(savedialog1.FileName) then

//判断:在对话框中选择的路径下有没有已经存在同名同类型文件,有则提示替换,没有则直接导出

          begin
            if Application.MessageBox('文件已存在,替换?', '提示',mb_yesno+mb_defbutton1+mb_iconquestion+mb_systemmodal)=id_yes then
            begin
              if SysUtils.DeleteFile(savedialog1.FileName)=False then
              begin
                ShowMessage(filenames + '文件正在使用,无法替换.' + chr(13) + chr(10) + '请关闭文件:' + savedialog1.FileName + '.再重新导入。');
                Result:=False;
                Exit;
              end;
            end;
          end;
          SaveDBGridEhToExportFile(ExpClass,TDBGridEh(dbgrd),savedialog1.FileName,True);
//使用别人已经封装好的导出方法

        end;
      end
      else
      begin
         Result:=False;
      end;
    end;
   finally
    savedialog1.Free;//手动释放之前手动创建的对象
   end;
end;

end.