锐浪报表 Grid++Report 导出其它格式文件

锐浪报表 Grid++Report 导出其它格式文件

    Grid++Report控件设计的报表,不仅可以打印,还可以导出8种格式的报表文件。

    在Grid++Report的打印浏览中,有指定导出文件的对话框: 

锐浪报表 Grid++Report 导出其它格式文件_第1张图片

     但是,软件的设计中,往往需要设计出,直接导出指定文件,或在打印报表的同时也导出指定格式的文件。

相关的参数和方法的调用,详见以下说明: 

    一、导出默认格式报表文件

    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。

锐浪报表 Grid++Report 导出其它格式文件_第2张图片

    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 := '[email protected]';
    ExportOption.MailSubject := '报表导出并发送Email';
    ExportOption.MailText := '报表导出并发送Email的相关说明...';

    //导出后不打开文件查看
    GridppReport1.Export(FALSE);

    //最后一定要记得调用 UnprepareExport 释放导出过程中占据的资源
    GridppReport1.UnprepareExport();
end;

    七、GridppReport默认导出文件的对话框

锐浪报表 Grid++Report 导出其它格式文件_第3张图片

     八、导出文件参数

//得到本程序默认的导出文件
function TForm1.GetExportFileName(IsDirect :Bool) :AnsiString;
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;
        if IsDirect then
                FileName := 'ExportDircet'
        else
                FileName := 'Export';
        Result := ExtractFileDir(Application.ExeName) + '\' + FileName + '.' + ExtFileName;
end;

注意导出的默认文件名:

    //指定导出文件的完整路径与文件名称
    pOptionObject.FileName := GetExportFileName(false); 

或  直接指定
    pOptionObject.FileName := 'D:\Temp\my.xls';
 

你可能感兴趣的:(Grid++Report,三方控件,编程技巧,excel,delphi,开发语言)