function DBGridEhToExportFile(dbgrideh:TDBGridEh;filename:string='导出的文件'):boolean ;
var ExpClass:TDBGridEhExportClass;
Ext:String;
savedialog1:tsavedialog;
begin
result:=True ;
savedialog1:=tsavedialog.Create(nil);
savedialog1.Filter:='Excel 文件(*.xls)|*.xls|分隔符格式(*.csv)|*.csv|Html文件(*.htm)|*.htm|WORD 文件(*.rtf)|*.rtf|文本文件(*.txt)|*.txt';
savedialog1.FileName:=filename;
if (dbgrideh is TDBGridEh) then
if SaveDialog1.Execute then
begin
case SaveDialog1.FilterIndex of
1: begin ExpClass := TDBGridEhExportAsText; Ext := 'xls'; end;
2: begin ExpClass := TDBGridEhExportAsCSV; Ext := 'csv'; end;
3: begin ExpClass := TDBGridEhExportAsHTML; Ext := 'htm'; end;
4: begin ExpClass := TDBGridEhExportAsRTF; Ext := 'rtf'; end;
5: begin ExpClass := TDBGridEhExportAsXLS; Ext := 'txt'; end;
else
ExpClass := nil; Ext := '';
end;
if ExpClass <> nil then
begin
if UpperCase(Copy(SaveDialog1.FileName,Length(SaveDialog1.FileName)-2,3)) <>
UpperCase(Ext) then
SaveDialog1.FileName := SaveDialog1.FileName + '.' + Ext; if sysutils.FileExists( SaveDialog1.FileName) then
begin
if application.MessageBox('文件已存在,替换?','提示',mb_yesno+mb_defbutton1+mb_iconquestion+mb_systemmodal)=idyes then
begin
if sysutils.DeleteFile( SaveDialog1.FileName)=false then
begin
showmessage(filename+'文件正在使用,无法替换.'+chr(13)+chr(10)+'请关闭文件:'+savedialog1.FileName+'.在重新导入。'); result:=false;
exit;
end;
end;
end;
SaveDBGridEhToExportFile(ExpClass,TDBGridEh(dbgrideh), SaveDialog1.FileName,true); //改为false 只导出选择行
end;
end
else
begin
result:=false;
end;
SaveDialog1.Free ;
end;导出到EXCEL 可以,
导出到HTM 可以
导出到TXT 中文正常显示但前后有乱码
导出到CVS 分割符是分号不是逗号
导出到RTF ,中文是乱码高手指点 delphi 2010 update 5
var ExpClass:TDBGridEhExportClass;
Ext:String;
savedialog1:tsavedialog;
begin
result:=True ;
savedialog1:=tsavedialog.Create(nil);
savedialog1.Filter:='Excel 文件(*.xls)|*.xls|分隔符格式(*.csv)|*.csv|Html文件(*.htm)|*.htm|WORD 文件(*.rtf)|*.rtf|文本文件(*.txt)|*.txt';
savedialog1.FileName:=filename;
if (dbgrideh is TDBGridEh) then
if SaveDialog1.Execute then
begin
case SaveDialog1.FilterIndex of
1: begin ExpClass := TDBGridEhExportAsText; Ext := 'xls'; end;
2: begin ExpClass := TDBGridEhExportAsCSV; Ext := 'csv'; end;
3: begin ExpClass := TDBGridEhExportAsHTML; Ext := 'htm'; end;
4: begin ExpClass := TDBGridEhExportAsRTF; Ext := 'rtf'; end;
5: begin ExpClass := TDBGridEhExportAsXLS; Ext := 'txt'; end;
else
ExpClass := nil; Ext := '';
end;
if ExpClass <> nil then
begin
if UpperCase(Copy(SaveDialog1.FileName,Length(SaveDialog1.FileName)-2,3)) <>
UpperCase(Ext) then
SaveDialog1.FileName := SaveDialog1.FileName + '.' + Ext; if sysutils.FileExists( SaveDialog1.FileName) then
begin
if application.MessageBox('文件已存在,替换?','提示',mb_yesno+mb_defbutton1+mb_iconquestion+mb_systemmodal)=idyes then
begin
if sysutils.DeleteFile( SaveDialog1.FileName)=false then
begin
showmessage(filename+'文件正在使用,无法替换.'+chr(13)+chr(10)+'请关闭文件:'+savedialog1.FileName+'.在重新导入。'); result:=false;
exit;
end;
end;
end;
SaveDBGridEhToExportFile(ExpClass,TDBGridEh(dbgrideh), SaveDialog1.FileName,true); //改为false 只导出选择行
end;
end
else
begin
result:=false;
end;
SaveDialog1.Free ;
end;导出到EXCEL 可以,
导出到HTM 可以
导出到TXT 中文正常显示但前后有乱码
导出到CVS 分割符是分号不是逗号
导出到RTF ,中文是乱码高手指点 delphi 2010 update 5
告诉我http://topic.csdn.net/u/20100324/11/f2f22728-282c-4115-819b-23bb92f2642c.html