用实例详述:
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.