搜索
您的当前位置:首页DBGridEh导出功能详解

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 '+pExpFile,mtInformation,[mbOk],0);

end;

end;

end;

//部分导出过程

//按现as

procedure TForm1.btnPartExportClick(Sender: TObject);

var

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

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

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

begin

SaveDialog1.FileName := '';

if (ActiveControl is TDBGridEh) then

if SaveDialog1.Execute then begin

case SaveDialog1.FilterIndex of

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);

if UpperCase(Copy(pExpFile,Length(pExpFile)-2,3)) <>

UpperCase(pExt) then

pExpFile := pExpFile + '.' + pExt;

SaveDBGridEhToExportFile(pExpClass,TDBGridEh(ActiveControl),pExpFile,False);

X_pMsg:='The data have saved as '+pExpFile;

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

MessageDlg(x_pMsg,mtInformation,[mbOk],0);

end;

end;

end;

因篇幅问题不能全部显示,请点此查看更多更全内容

Top