DBGridEh导出功能详解

DBGridEh导出功能详解(SaveDBGridEhToExportFile说明)

---

  经常有用户要求数据导出,对此,我们一直用最原始的办法,打开查询,读取每个字段的数据,逐条的的写入文件。如下:

procedure TForm10.prExpData(pMode:Byte);

Var

pFPath:String;

pFName:String;   //Exp Name of prefix

pFObject:string;

pMyFile:TextFile;

pStr:string;

i:integer;

begin

pFObject:=‘c:\Exp_Sample.csv‘;

AssignFile(pMyFile,pFObject);

ReWrite(pMyFile);

with DM.QR_ENJBTR_250 do begin

CLOSE;

open;

//写入标题

for i:=0 to DM.QR_ENJBTR_250.FieldCount-1 do begin

pStr:=pStr+DM.QR_ENJBTR_250.FieldDefs.Items[i].Name+‘,‘;

end;

WriteLn(pMyFile,pStr);

//写入内容

while not EOF do begin

pStr:=‘‘;

For i:=0 to FieldCount-1 do begin

pstr:=pStr+Fields.Fields[i].AsString+‘,‘;

end;

//copy(pStr,1,Length(pStr)-1);

WriteLn(pMyFile,pStr);

Next;

end;

end;  //With end;

xMsg:=‘--->成功导出PurPart明细表:‘+pFObject; cpWriteLog(x_pLogFile,xMsg,1);  // V2033 Add

CloseFile(pMyFile);

end;

  后来发现,其实DBGridEh控件提供了一个过程:SaveDBGridEhToExportFile,提供了很好的导出功能,可以方便的将查询出的数据导出为txt,csv,html等格式的文件。

  说明如下:

  procedure SaveDBGridEhToExportFile( ExportClass: TDBGridEhExportClass; DBGridEh: TCustomDBGridEh; const FileName: String; IsSaveAll: Boolean);

  其中:

  ExportClass--导出文件类型,可以为以下值:TDBGridEhExportAsText, TDBGridEhExportAsCsv, TDBGridEhExportAsHTML, TDBGridEhExportAsRTF, TDBGridEhExportAsVCLDBIF,TDBGridEhExportAsXLS.

  DBGridEh--DBGridEh控件

  FileName--要导出的文件路径名称

  IsSaveAll--是否导出全部数据:Y-导出全部数据;N:导出选择部分数据。

  注意:

  使用时必须添加新的引用单元:DBGridEhImpExp(以下两个引用单元也必须存在:DBGridEh,  EhLibBDE)。

  示例:

  SaveDBGridEhToExportFile(pExpClass,dbgMain,pExpFile,True);    //导出全部数据。

  SaveDBGridEhToExportFile(pExpClass,TDBGridEh(ActiveControl),pExpFile,False);  //导出选择数据

  +++

  附使用示例:

  ---

  环境:Delphi Version6.0[Build 6.163]+EhlibV3.4

  准备介绍如下:

  1,在窗体uses中,添加新的引用单元:DBGridEhImpExp(以下两个引用单元也必须存在:DBGridEh,  EhLibBDE)。

  2,在窗体中添加一个DBGridEh控件,并设置名称为:dbgMain(可以随意命名的)。

  3,设置DBGridEh控件可以多重选择:在属性页中设置options-dgMultiSelect=true。为的是可以选择范围,导出部分数据。

  4,为DBGridEh控件指定DataSource数据源。

  5,添加TSaveDialog控件SaveDialog1,设定文件类型列表,和默认文件类型,如下(也可以直接在属性页中设置):

  SaveDialog1.Filter:=‘Text files (*.txt)|*.TXT|Comma separated values (*.csv)|*.CSV|HTML file (*.htm)|*.HTM|Rich Text Format (*.rtf)|*.RTF|Microsoft Excel Workbook (*.xls)|*.XLS‘;

  SaveDialog1.FilterIndex:=0;

  6,添加两上按钮,分别为全部导出和部分导出,分别添加以下代码到按钮的单击事件中。

//全部导出过程

procedure TForm1.btnAllExportClick(Sender: TObject);

var

pExpClass:TDBGridEhExportClass;      //导出文件类型

pExt:string ;                        //导出文件扩展名

pExpFile:string;                     //导出文件路径及文件名称

pExpFileExt:string;                  //SaveDialog1返回的文件名的扩展名

begin

//清空SaveDialog1默认文件名

SaveDialog1.FileName := ‘‘;

if SaveDialog1.Execute then begin    //如果SaveDialog1正确执行

case SaveDialog1.FilterIndex of     //根据FilterIndex设置导出文件类型和扩展名

1: begin pExpClass := TDBGridEhExportAsText; pExt := ‘txt‘; end;

2: begin pExpClass := TDBGridEhExportAsCSV; pExt := ‘csv‘; end;

3: begin pExpClass := TDBGridEhExportAsHTML; pExt := ‘htm‘; end;

4: begin pExpClass := TDBGridEhExportAsRTF; pExt := ‘rtf‘; end;

5: begin pExpClass := TDBGridEhExportAsXLS; pExt := ‘xls‘; end;

else

pExpClass := nil; pExt := ‘‘;

end;

if pExpClass <> nil then begin        //如果导出文件类型已经被正确设置

pExpFile:= trim(SaveDialog1.FileName);

pExpFileExt:= Copy(pExpFile,Length(pExpFile)-2,3);

//判断返回的文件名称是否已经包含正确的扩展名,如果没有则添加正确的扩展名

if UpperCase(pExpFileExt) <> UpperCase(pExt) then

pExpFile := pExpFile + ‘.‘ + pExt;

SaveDBGridEhToExportFile(pExpClass,DBGridEh1,pExpFile,True);    //按现有设置导出全部数据。

//X_pMsg:=‘The data have saved as ‘+pExpFile;

//stbForm.Panels[0].Text:=X_pMsg;

MessageDlg(‘The data have saved as ‘+pExpFile,mtInformation,[mbOk],0);

end;

end;

end;

//部分导出过程

procedure TForm1.btnAllExportClick(Sender: TObject);

var

pExpClass:TDBGridEhExportClass;      //导出文件类型

pExt:string ;                        //导出文件扩展名

pExpFile:string;                     //导出文件路径及文件名称

pExpFileExt:string;                  //SaveDialog1返回的文件名的扩展名

begin

//清空SaveDialog1默认文件名

SaveDialog1.FileName := ‘‘;

if SaveDialog1.Execute then begin    //如果SaveDialog1正确执行

case SaveDialog1.FilterIndex of     //根据FilterIndex设置导出文件类型和扩展名

1: begin pExpClass := TDBGridEhExportAsText; pExt := ‘txt‘; end;

2: begin pExpClass := TDBGridEhExportAsCSV; pExt := ‘csv‘; end;

3: begin pExpClass := TDBGridEhExportAsHTML; pExt := ‘htm‘; end;

4: begin pExpClass := TDBGridEhExportAsRTF; pExt := ‘rtf‘; end;

5: begin pExpClass := TDBGridEhExportAsXLS; pExt := ‘xls‘; end;

else

pExpClass := nil; pExt := ‘‘;

end;

if pExpClass <> nil then begin        //如果导出文件类型已经被正确设置

pExpFile:= trim(SaveDialog1.FileName);

pExpFileExt:= Copy(pExpFile,Length(pExpFile)-2,3);

//判断返回的文件名称是否已经包含正确的扩展名,如果没有则添加正确的扩展名

if UpperCase(pExpFileExt) <> UpperCase(pExt) then

pExpFile := pExpFile + ‘.‘ + pExt;

SaveDBGridEhToExportFile(pExpClass,DBGridEh1,pExpFile,False);    //按现有设置导出全部数据。

//X_pMsg:=‘The data have saved as ‘+pExpFile;

//stbForm.Panels[0].Text:=X_pMsg;

MessageDlg(‘The data have saved as ‘+pExpFile,mtInformation,[mbOk],0);

end;

end;

end;

DBGridEh导出功能详解

时间: 2024-11-13 02:03:14

DBGridEh导出功能详解的相关文章

MySQL数据库使用mysqldump导出数据详解

mysqldump是mysql用于转存储数据库的实用程序.它主要产生一个SQL脚本,其中包含从头重新创建数据库所必需的命令CREATE TABLE INSERT等.接下来通过本文给大家介绍MySQL数据库使用mysqldump导出数据详解,需要的朋友一起学习吧 mysqldump是mysql用于转存储数据库的客户端程序.它主要产生一系列的SQL语句,可以封装到文件,该文件包含有所有重建您的数据库所 需要的 SQL命令如CREATE DATABASE,CREATE TABLE,INSERT等等.可

SVN功能详解

SVN功能详解 TortoiseSVN是windows下其中一个非常优秀的SVN客户端工具.通过使用它,我们可以可视化的管理我们的版本库.不过由于它只是一个客户端,所以它不能对版本库进行权限管理. TortoiseSVN不是一个独立的窗口程序,而是集成在windows右键菜单中,使用起来比较方便. TortoiseSVN每个菜单项都表示什么意思 01.SVN Checkout(SVN取出)点击SVN Checkout,弹出检出提示框,在URL of repository输入框中输入服务器仓库地址

zabbix专题:第九章 zabbix自动发现功能详解

zabbix自动发现功能详解 对Linux有兴趣的朋友加入QQ群:476794643 在线交流 本文防盗链:http://zhang789.blog.51cto.co zabbix自动发现功能详解 网络发现简介 有100台服务器,不想一台台主机去添加,能不能让zabbix自动添加主机呢,当然可以,网络发现便是这个功能,当然前提条件是所有服务器都已经安装了agent或者snmp(其实也可以不用,鉴于我们大部分功能都用agent,所以请安装上agent),server扫描配置好的ip段,自动添加ho

PHP5.2至5.6的新增功能详解

截至目前(2014.2), PHP 的最新稳定版本是 PHP5.5, 但有差不多一半的用户仍在使用已经不在维护 [注] 的 PHP5.2, 其余的一半用户在使用 PHP5.3 [注].因为 PHP 那"集百家之长"的蛋疼语法,加上社区氛围不好,很多人对新版本,新特征并无兴趣.本文将会介绍自 PHP5.2 起,直至 PHP5.6 中增加的新特征. PHP5.2 以前:autoload, PDO 和 MySQLi, 类型约束 PHP5.2:JSON 支持 PHP5.3:弃用的功能,匿名函数

jmeter 基础功能详解

jmeter 基础功能详解 thread group:包含一组线程,每个线程独立地执行测试计划. sampler:采样器,有多种不同的sample实现,用来发起各种请求,如http请求,jdbc请求,javaTest请求等等. logic controller:逻辑控制器有多种不同的实现,可以决定每个sample的执行顺序. listener:有多种不同的实现,主要用于统计测试接话运行中的数据并展示,如可以进行图形化方式展示响应时间. timer:定时器,有多种不同的实现,可用作每个请求见的停顿

ServletContext作用功能详解

ServletContext作用功能详解 ServletContext,是一个全局的储存信息的空间,服务器开始, 其就存在,服务器关闭,其才释放.request,一个用户可有多个:session,一个用户一个:而servletContext,所有用户共用一 个.所以,为了节省空间,提高效率,ServletContext中,要放必须的.重要的.所有用户需要共享的线程又是安全的一些信息. 换一种方式说吧,运行在JAVA虚拟机中的每一个Web应用程序都有一个与之相关的Servlet上下文.Servle

expdp impdp 数据库导入导出命令详解

一.创建逻辑目录,该命令不会在操作系统创建真正的目录,最好以system等管理员创建. create directory dpdata1 as 'd:\test\dump'; 二.查看管理理员目录(同时查看操作系统是否存在,因为Oracle并不关心该目录是否存在,如果不存在,则出错) select * from dba_directories; 三.给scott用户赋予在指定目录的操作权限,最好以system等管理员赋予. grant read,write on directory dpdata

【转】 /etc/fstab功能详解

[转] /etc/fstab功能详解 最近去客户现场时,遇到 了一个关于挂载文件/etc/fstab文件的问题,就写了一下/etc/fstab文件的作用一个文件中各个参数的含义.供大家参考有不正确的地方敬请指正. 一./etc/fstab文件的作用 磁盘被手动挂载之后都必须把挂载信息写入/etc/fstab这个文件中,否则下次开机启动时仍然需要重新挂载. 系统开机时会主动读取/etc/fstab这个文件中的内容,根据文件里面的配置挂载磁盘.这样我们只需要将磁盘的挂载信息写入这个文件中我们就不需要

Dynamics CRM2013 1:N关系 sub-grid中的“添加现有项”和“添加新建项”功能详解

CRM2013中sub-grid的样式和2011中有了较大的变化,2013和2011界面对比如下 在2011的时候按钮是在ribbon区,1:N的父子关系实体直接点击添加新纪录就可以,但2013就不行了点加号首先会有个下拉框把现有的子实体数据列出来,你可以选择现有的也可以新建 既然你的关系实体是1:N的父子实体,那子的存在肯定是依赖于与父实体的,所以这个地方就压根不存在关联现有实体一旦关联就会报错,所以纯碎新建的话这边的步骤就繁琐了,同时也会给用户带来迷惑 所以这个地方这种情况下完全没必要添加现