锐浪报表 Grid++Report 导出其它格式文件
Grid++Report控件设计的报表,不仅可以打印,还可以导出8种格式的报表文件。
在Grid++Report的打印浏览中,有指定导出文件的对话框:
但是,软件的设计中,往往需要设计出,直接导出指定文件,或在打印报表的同时也导出指定格式的文件。
相关的参数和方法的调用,详见以下说明:
一、导出默认格式报表文件
1、Grid++Report默认的导出格式,文件名默认后缀名.grd
2、直接导出默认文件
procedure TForm1.btnSaveAsGRDClick(Sender: TObject);
begin
if SaveDialog1.Execute() then
GridppReport1.GenerateDocumentFile( SaveDialog1.FileName );
end;
3、加载并查看默认文件
此时,需要通过TGRPrintViewer的,显示打开的文件,TGRPrintViewer可以放在本窗口,也可以设置专用窗口中。如:ViewGRDForm
procedure TForm1.btnLoadViewGRDClick(Sender: TObject);
begin
if OpenDialog1.Execute() then
begin
ViewGRDForm.FFileName := OpenDialog1.FileName;
ViewGRDForm.ShowModal();
end;
end;
二、导出指定类型文件
1、导出文件指定类型文件有7种格式,分别为Excel,RTF,PDF,Html,Image,Text,CSV。
2、软件中,可通过TCombobox控件,指定导出的文件类型:
function TForm1.GetExportType :GRExportType;
begin
case ComboBox1.ItemIndex of
0: Result := gretXLS;
1: Result := gretRTF;
2: Result := gretPDF;
3: Result := gretHTM;
4: Result := gretIMG;
5: Result := gretTXT;
else
Result := gretCSV;
end;
end;
3、预定的7种的文件后缀名,获取文件名函数
function TForm1.GetExportFileName(sPathFile :String) :String;
var ExtFileName :string;
FileName :string;
begin
case GetExportType() of
gretXLS: ExtFileName := 'xls'; // 扩展名
gretRTF: ExtFileName := 'rtf';
gretPDF: ExtFileName := 'pdf';
gretHTM: ExtFileName := 'htm';
gretIMG: ExtFileName := 'tif';
gretTXT: ExtFileName := 'txt';
else
ExtFileName := 'csv';
end;
Result := ExtractFileDir(Application.ExeName) + '\' + sPathFile + '.' + ExtFileName;
end;
三、导出文件方式一
调用ExportDirect方法执行导出任务。
1、IGridppReport.ExportDirect函数
Function ExportDirect(GRExportType: ExportType; FileName :String;ShowOptionDlg,DoneOpen :Boolean):Boolean;
2、参数
GRExportType ExportType 指定导出的文件类型。
FileName String 指定导出的完整文件路径与文件名称。
ShowOptionDlg boolean 指定是否在导出之前显示选项设置对话框。
DoneOpen boolean 指示是否在导出数据之后用关联程序打开导出文件。
3、返回值boolean,指示是否成功进行了数据导出。
4、调用执行
GridppReport1.ExportDirect(GetExportType(), WideString(GetExportFileName(True)), ckbShowOptionDlg.Checked, True);
四、导出文件方式二
调用Export方法执行导出任务
1、IGridppReport.Export方法
Function Export(DoneOpen:Boolean):Boolean;
2、参数
DoneOpen boolean 指示是否在导出数据之后用关联程序打开导出文件。
3、返回值bool,指示数据导出是否成功执行。 4、说明
在调用Export方法之前一定要调用PrepareExport方法,在其后一定要调用UnprepareExport方法。
5、调用执行
procedure TForm1.Button2Click(Sender: TObject);
var ExportOption :IGRExportOption;
begin
//通过调用PrepareExport,Export, UnprepareExport这三个方法执行导出任务
//这三个方法必须按顺序一起使用,PrepareExport返回导出选项对象的接口指针
//可以设定导出选项对象的属性
ExportOption := GridppReport1.PrepareExport(GetExportType());
// 此处代码,不使用ExportBegin事件时需要
{
ExportOption.FileName := GetExportFileName(False);
case GetExportType() of
gretXLS: begin
ExportOption.AsE2XLSOption.OnlyExportDetailGrid := ckbOnlyDetailGrid.Checked;
ExportOption.AsE2XLSOption.SupressEmptyLines := ckbSupressEmptyLines.Checked;
end;
gretRTF: begin
ExportOption.AsE2RTFOption.OnlyExportDetailGrid := ckbOnlyDetailGrid.Checked;
ExportOption.AsE2RTFOption.SupressEmptyLines := ckbSupressEmptyLines.Checked;
end;
gretPDF: begin
end;
gretHTM: begin
ExportOption.AsE2HTMOption.OnlyExportDetailGrid := ckbOnlyDetailGrid.Checked;
ExportOption.AsE2HTMOption.SupressEmptyLines := ckbSupressEmptyLines.Checked;
end;
gretIMG: begin
end;
gretTXT: begin
ExportOption.AsE2TXTOption.OnlyExportDetailGrid := ckbOnlyDetailGrid.Checked;
ExportOption.AsE2TXTOption.SupressEmptyLines := ckbSupressEmptyLines.Checked;
end;
else begin
ExportOption.AsE2CSVOption.OnlyExportDetailGrid := ckbOnlyDetailGrid.Checked;
ExportOption.AsE2CSVOption.SupressEmptyLines := ckbSupressEmptyLines.Checked;
end;
end;
}
if ckbShowOptionDlg.Checked then
begin
//如果在选项对话框中选择了‘取消’按钮,则中止导出过程,
//但UnprepareExport方法在中止前一定要被调用
if Not ExportOption.ShowOptionDlg() then
begin
GridppReport1.UnprepareExport();
Exit;
end;
end;
GridppReport1.Export(True);
GridppReport1.UnprepareExport();
end;
五、ExportBegin事件
ExportDirect和Export方法,执行前必要让TGridppReport控件,有一个ExportBegin事件,初始化数据。
如果省略ExportBegin事件,可以在调用之前,执行下述代码即可。
procedure TForm1.GridppReport1ExportBegin(Sender: TObject; const pOptionObject: IGRExportOption);
begin
//ExportBegin 事件在将报表导出之前会触发到,无论是调用 ExportDirect 与 Export 方法,
//还是从打印预览窗口等地方执行导出,都会触发到 ExportBegin 事件。
//通常在 ExportBegin 事件中设置导出选项参数,改变默认导出行为
pOptionObject.AbortOpenFile := true; //导出后不用关联程序打开导出文件,如导出Excel文件之后不用Excel打开
pOptionObject.AbortShowOptionDlg := not ckbShowOptionDlg.Checked; //导出之前不显示导出选项设置对话框
//指定导出文件的完整路径与文件名称
pOptionObject.FileName := GetExportFileName(false); //'d:\export\my.dat';
//根据导出类型设置其特有的选项参数,有关选项参数的具体信息清参考帮助文档。
//IGRExportOption是导出选项的基类,其它具体导出选项的接口名称都以IGRE2为前缀
case pOptionObject.ExportType of
gretXLS:
begin
pOptionObject.AsE2XLSOption.OnlyExportDetailGrid := ckbOnlyDetailGrid.Checked;
pOptionObject.AsE2XLSOption.SupressEmptyLines := ckbSupressEmptyLines.Checked;
pOptionObject.AsE2XLSOption.ExportPageHeaderFooter := false;
pOptionObject.AsE2XLSOption.SameAsPrint := false;
pOptionObject.AsE2XLSOption.ExportPageBreak := false;
end;
gretRTF:
begin
pOptionObject.AsE2RTFOption.OnlyExportDetailGrid := ckbOnlyDetailGrid.Checked;
pOptionObject.AsE2RTFOption.SupressEmptyLines := ckbSupressEmptyLines.Checked;
end;
gretPDF:
begin
pOptionObject.AsE2PDFOption.Author := 'My Author';
pOptionObject.AsE2PDFOption.Subject := 'My Subject';
end;
gretHTM:
begin
pOptionObject.AsE2HTMOption.OnlyExportDetailGrid := ckbOnlyDetailGrid.Checked;
pOptionObject.AsE2HTMOption.SupressEmptyLines := ckbSupressEmptyLines.Checked;
end;
gretIMG:
begin
pOptionObject.AsE2IMGOption.DPI := 300;
pOptionObject.AsE2IMGOption.ImageType := greitPNG;
end;
gretTXT:
begin
pOptionObject.AsE2TXTOption.OnlyExportDetailGrid := ckbOnlyDetailGrid.Checked;
pOptionObject.AsE2TXTOption.SupressEmptyLines := ckbSupressEmptyLines.Checked;
end;
else //CSV
begin
pOptionObject.AsE2CSVOption.OnlyExportDetailGrid := ckbOnlyDetailGrid.Checked;
pOptionObject.AsE2CSVOption.SupressEmptyLines := ckbSupressEmptyLines.Checked;
end;
end;
end;
六、导出文件同时发送Email
1、此项功能,在windows系统中,必须安装Email发送软件,并在系统中,调用指定该软件。 2、参数设置与调用
procedure TForm1.btnExportMailClick(Sender: TObject);
var ExportOption :IGRExportOption;
begin
ExportOption := GridppReport1.PrepareExport(GetExportType());
//指定导出后发送EMail并设定发送EMail的参数
ExportOption.MailExportFile := true;
ExportOption.MailTo := 'name@domain.com';
ExportOption.MailSubject := '报表导出并发送Email';
ExportOption.MailText := '报表导出并发送Email的相关说明...';
//导出后不打开文件查看
GridppReport1.Export(FALSE);
//最后一定要记得调用 UnprepareExport 释放导出过程中占据的资源
GridppReport1.UnprepareExport();
end;
七、GridppReport默认导出文件的对话框