Ehlib 的 DBGridEh 控件导出到Excel的三种封装过程/函数
2013-09-10 23:23
519 查看
必须uses DBGridEhImpExp, EhlibADO, DBGridEh
第一种:
procedure TForm2.dbgridehtoexp(lsdbgrideh: tdbgrideh; Title: string); //lsdbgrideh传入dbgrideh变量;Title保存标题
var
ExpClass: TDBGridEhExportClass;
Ext: string;
sd1: tsavedialog;
begin
try
sd1 := tsavedialog.Create(nil);
sd1.Filter := '*.xls|*.xls|*.csv|*.csv|*.htm|*.htm|*.rtf|*.rtf|*.txt|*.txt';
sd1.FileName := Title;
if sd1.Execute then
begin
case sd1.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(sd1.FileName, Length(sd1.FileName) - 2, 3)) <> UpperCase(Ext) then
sd1.FileName := sd1.FileName + '.' + Ext;
if FileExists(sd1.FileName) then
begin
if application.MessageBox('文件名已存在,是否覆盖', '提示', MB_ICONASTERISK or MB_OKCANCEL) <> idok then
begin
exit;
end;
end;
Screen.Cursor := crHourGlass;
SaveDBGridEhToExportFile(ExpClass, lsDBGridEh, sd1.FileName, true);
Screen.Cursor := crDefault;
end;
end;
finally
sd1.Free;
end;
end;
第二种:
procedure TForm2.GridSaveAS(grid: TDBGridEh);
var
ExpClass: TDBGridEhExportClass;
Ext: string;
SaveDlg: TSaveDialog;
ExportAll: Boolean;
begin
ExportAll := True; //缺省情况下导出所有数据
SaveDlg := TSaveDialog.Create(Application);
SaveDlg.Filter := 'Excel表格(*.XLS)|*.XLS|HTML文档(*.HTM)|*.HTM|RTF格式(*.RTF)|*.RTF|纯文本文件(*.TXT)|*.TXT|逗号分隔文本格式(*.CSV)|*.CSV';
SaveDlg.FileName := '未命名';
SaveDlg.Options := [ofOverwritePrompt, ofHideReadOnly, ofEnableSizing];
if SaveDlg.Execute then
begin
case SaveDlg.FilterIndex of
1:
begin
ExpClass := TDBGridEhExportAsXLS;
Ext := 'xls';
end;
2:
begin
ExpClass := TDBGridEhExportAsHTML;
Ext := 'htm';
end;
3:
begin
ExpClass := TDBGridEhExportAsRTF;
Ext := 'rtf';
end;
4:
begin
ExpClass := TDBGridEhExportAsText;
Ext := 'txt';
end;
5:
begin
ExpClass := TDBGridEhExportAsCSV;
Ext := 'csv';
end;
else
ExpClass := nil;
Ext := '';
end;
if ExpClass <> nil then
begin
if UpperCase(Copy(SaveDlg.FileName, Length(SaveDlg.FileName) - 2, 3)) <>
UpperCase(Ext) then
SaveDlg.FileName := SaveDlg.FileName + '.' + Ext;
//如果grid中有选择的区域,则只导出所选择的区域
if grid.Selection.SelectionType <> gstNon then ExportAll := False;
try
SaveDBGridEhToExportFile(ExpClass, grid, SaveDlg.FileName, ExportAll);
except
on E: Exception do
begin
MessageBox(0, LPCTSTR('保存文件发生异常,请检查是否有重名文件并且该文件没有被打开!'), '注意', MB_OK or MB_ICONWARNING);
Exit;
end;
end;
end;
end;
end;
第三种:
function DBGridEhToExportFile(dbgrideh:TDBGridEh;filename:string='导出的文件'):boolean ;
var ExpClass:TDBGridEhExportClass;
Ext:String;
sd1:tsavedialog;
begin
result:=True ;
sd1:=tsavedialog.Create(nil);
sd1.Filter:='Excel 文件(*.xls)|*.xls|分隔符格式(*.csv)|*.csv|Html文件(*.htm)|*.htm|WORD 文件(*.rtf)|*.rtf|文本文件(*.txt)|*.txt';
sd1.FileName:=filename;
if (dbgrideh is TDBGridEh) then
if sd1.Execute then
begin
case sd1.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(sd1.FileName,Length(sd1.FileName)-2,3)) <>
UpperCase(Ext) then
sd1.FileName := sd1.FileName + '.' + Ext;
if FileExists( sd1.FileName) then
begin
if application.MessageBox('文件已存在,替换?','提示',mb_yesno+mb_defbutton1+mb_iconquestion+mb_systemmodal)=idyes then
begin
if DeleteFile( sd1.FileName)=false then
begin
showmessage(filename+'文件正在使用,无法替换.'+chr(13)+chr(10)+'请关闭文件:'+sd1.FileName+'.在重新导入。');
result:=false;
exit;
end;
end;
end;
SaveDBGridEhToExportFile(ExpClass,TDBGridEh(dbgrideh), sd1.FileName,true); //改为false 只导出选择行
end;
end
else
begin
result:=false;
end;
sd1.Free ;
end;
第一种:
procedure TForm2.dbgridehtoexp(lsdbgrideh: tdbgrideh; Title: string); //lsdbgrideh传入dbgrideh变量;Title保存标题
var
ExpClass: TDBGridEhExportClass;
Ext: string;
sd1: tsavedialog;
begin
try
sd1 := tsavedialog.Create(nil);
sd1.Filter := '*.xls|*.xls|*.csv|*.csv|*.htm|*.htm|*.rtf|*.rtf|*.txt|*.txt';
sd1.FileName := Title;
if sd1.Execute then
begin
case sd1.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(sd1.FileName, Length(sd1.FileName) - 2, 3)) <> UpperCase(Ext) then
sd1.FileName := sd1.FileName + '.' + Ext;
if FileExists(sd1.FileName) then
begin
if application.MessageBox('文件名已存在,是否覆盖', '提示', MB_ICONASTERISK or MB_OKCANCEL) <> idok then
begin
exit;
end;
end;
Screen.Cursor := crHourGlass;
SaveDBGridEhToExportFile(ExpClass, lsDBGridEh, sd1.FileName, true);
Screen.Cursor := crDefault;
end;
end;
finally
sd1.Free;
end;
end;
第二种:
procedure TForm2.GridSaveAS(grid: TDBGridEh);
var
ExpClass: TDBGridEhExportClass;
Ext: string;
SaveDlg: TSaveDialog;
ExportAll: Boolean;
begin
ExportAll := True; //缺省情况下导出所有数据
SaveDlg := TSaveDialog.Create(Application);
SaveDlg.Filter := 'Excel表格(*.XLS)|*.XLS|HTML文档(*.HTM)|*.HTM|RTF格式(*.RTF)|*.RTF|纯文本文件(*.TXT)|*.TXT|逗号分隔文本格式(*.CSV)|*.CSV';
SaveDlg.FileName := '未命名';
SaveDlg.Options := [ofOverwritePrompt, ofHideReadOnly, ofEnableSizing];
if SaveDlg.Execute then
begin
case SaveDlg.FilterIndex of
1:
begin
ExpClass := TDBGridEhExportAsXLS;
Ext := 'xls';
end;
2:
begin
ExpClass := TDBGridEhExportAsHTML;
Ext := 'htm';
end;
3:
begin
ExpClass := TDBGridEhExportAsRTF;
Ext := 'rtf';
end;
4:
begin
ExpClass := TDBGridEhExportAsText;
Ext := 'txt';
end;
5:
begin
ExpClass := TDBGridEhExportAsCSV;
Ext := 'csv';
end;
else
ExpClass := nil;
Ext := '';
end;
if ExpClass <> nil then
begin
if UpperCase(Copy(SaveDlg.FileName, Length(SaveDlg.FileName) - 2, 3)) <>
UpperCase(Ext) then
SaveDlg.FileName := SaveDlg.FileName + '.' + Ext;
//如果grid中有选择的区域,则只导出所选择的区域
if grid.Selection.SelectionType <> gstNon then ExportAll := False;
try
SaveDBGridEhToExportFile(ExpClass, grid, SaveDlg.FileName, ExportAll);
except
on E: Exception do
begin
MessageBox(0, LPCTSTR('保存文件发生异常,请检查是否有重名文件并且该文件没有被打开!'), '注意', MB_OK or MB_ICONWARNING);
Exit;
end;
end;
end;
end;
end;
第三种:
function DBGridEhToExportFile(dbgrideh:TDBGridEh;filename:string='导出的文件'):boolean ;
var ExpClass:TDBGridEhExportClass;
Ext:String;
sd1:tsavedialog;
begin
result:=True ;
sd1:=tsavedialog.Create(nil);
sd1.Filter:='Excel 文件(*.xls)|*.xls|分隔符格式(*.csv)|*.csv|Html文件(*.htm)|*.htm|WORD 文件(*.rtf)|*.rtf|文本文件(*.txt)|*.txt';
sd1.FileName:=filename;
if (dbgrideh is TDBGridEh) then
if sd1.Execute then
begin
case sd1.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(sd1.FileName,Length(sd1.FileName)-2,3)) <>
UpperCase(Ext) then
sd1.FileName := sd1.FileName + '.' + Ext;
if FileExists( sd1.FileName) then
begin
if application.MessageBox('文件已存在,替换?','提示',mb_yesno+mb_defbutton1+mb_iconquestion+mb_systemmodal)=idyes then
begin
if DeleteFile( sd1.FileName)=false then
begin
showmessage(filename+'文件正在使用,无法替换.'+chr(13)+chr(10)+'请关闭文件:'+sd1.FileName+'.在重新导入。');
result:=false;
exit;
end;
end;
end;
SaveDBGridEhToExportFile(ExpClass,TDBGridEh(dbgrideh), sd1.FileName,true); //改为false 只导出选择行
end;
end
else
begin
result:=false;
end;
sd1.Free ;
end;
相关文章推荐
- Ehlib 的 DBGridEh 控件导出到Excel的三种封装过程/函数
- 通过SMExportToExcel控件导出DBGrid、DBGridEh里的数据
- DBGridEh 控件导出到Excel
- 一个导出CListCtrl控件数据到Excel文件的封装函数[r]
- TWinControl的刷新过程(5个非虚函数,4个覆盖函数,1个消息函数,默认没有双缓冲,注意区分是TCustomControl还是Windows原生封装控件,执行流程不一样)
- DxDbGrid与DbGridEh表格使用及导出Excel
- C# 导出 Excel 封装类 代码
- 一个将数据导出到EXCEL的存储过程
- ehlib5.6 中,dbgrideh控件如何实现点击字段名称排序
- 'vb.net2005的导出到Excel功能函数
- 导出所有脚本(不包括数据信息):包括:存储过程、函数、表脚本
- 关于POI导出excel过程总结
- 【转】Gridview导出到Excel,Gridview中的各类控件,Gridview中删除记录的处理
- 导出数据到excel的三种方法
- SQL导出到Excel 存储过程
- 使用CLR存储过程方便快捷导出数据到Excel
- Oracle采用存储过程执行sql语句,将查询到的数据导出到EXCEL中
- 导出Excel执行 Render() 的过程中调用 RegisterForEventValidation
- SQL SERVER 数据导出EXCEL 的存储过程
- DataGridview导出到Excel的公共函数