Ehlib 的 DBGridEh 控件导出到Excel的三种封装过程/函数
来源:互联网 发布:有20个usb端口的电脑 编辑:程序博客网 时间:2024/05/22 15:22
必须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;
- Ehlib 的 DBGridEh 控件导出到Excel的三种封装过程/函数
- Ehlib 的 DBGridEh 控件导出到Excel的三种封装过程/函数
- 点击Ehlib中DbGridEh控件的title排序
- EhLib表格控件DBGridEh自动排序、自动过滤的实现
- DbgridEh数据导出到Excel的方法(Delphi)
- 一个导出CListCtrl控件数据到Excel文件的封装函数[r]
- Ehlib导出至excel时的问题
- DBGRIDEH的汉化(EhLib的汉化)
- 关于Ehlib - DBGridEh 自动排序的解决方案
- ehlib中dbgrideh的多选框设置
- 关于在ehlib的DBGridEh控件中使用过滤功能的方法
- 关于在ehlib的DBGridEh控件中使用过滤功能的方法
- 修正Ehlib在RAD2009下的导出Excel的问题
- DbgridEh数据导出到Excel的方法(Delphi)--适用Ehlib7.0+D7
- EhLib控件的使用说明
- 封装excel的导出
- delphi dbgrideh导出到Excel 多表头
- MSHFlexgrid控件的内容导出到Excel
- C#相等比较用法总结
- 想你的 夜
- 如何编程判别一个Revit族的主题对象是墙还是基于面?
- 函数返回 局部变量问题
- IntentService解析
- Ehlib 的 DBGridEh 控件导出到Excel的三种封装过程/函数
- [C# 基础知识系列]专题一:深入解析委托——C#中为什么要引入委托
- 减少文件特征码的一些方法与技巧
- 一种保护眼睛的好方法
- 浏览器是如何工作的系列:CSS2可视化模型
- 问题11:双链表的相关操作
- 详谈 vc++源码免杀全套思路方法
- fight club
- hdu 4712