• delphi TMS FlexCel 导出PDF


    TMS FlexCel 导出PDF

    属性和方法

    TFlexCelPdfExport

    用于将Excel文件导出为PDF的组件。

    unit

    FlexCel.Render

    TFlexCelPdfExport.Create

    constructor Create(const aWorkbook: TExcelFile);
    constructor Create(const aWorkbook: TExcelFile; const aAllowOverwritingFiles: Boolean);
    

    创建一个新的 TFlexCelPdfExport 并将其分配给Excel文件。

    重载

    Create(TExcelFile, Boolean)

    创建一个新的 TFlexCelPdfExport 并将其分配给Excel文件,将AllowOverwritingFiles设置为所需的值。

    参数

    aWorkbook 包含此组件将导出的数据的Excel文件。

    aAllowOverwritingFiles 当为true时,现有文件将被覆盖。

    TFlexCelPdfExport.Export

    procedure Export(const pdfStream: TStream);
    procedure Export(const fileName: string);
    

    重载

    Export(TStream)

    将相关Excel工作簿的活动工作表导出到流。

    Export(string)

    将相关Excel工作簿的活动工作表导出到文件。

    参数

    pdfStream 将写入结果的流。

    fileName 要导出的文件。

    此方法是调用 BeginExport/ExportSheet/EndExport 的快捷方式。

    TFlexCelPdfExport.BeginExport

    procedure BeginExport(const pdfStream: TStream);
    

    初始化PDF导出为新文件。

    调用此方法后,您可以调用 ExportSheetExportAllVisibleSheets(Boolean, string) 将不同的Excel文件导出为同一个PDF。

    您应该始终通过调用 EndExport 来结束文档。

    参数

    pdfStream 将包含新PDF文件的流。

    TFlexCelPdfExport.ExportSheet

    procedure ExportSheet;
    procedure ExportSheet(const startPageToDisplay: Integer; const totalPagesToDisplay: Integer);
    procedure ExportSheet(const startPageToDisplay: Integer; totalPagesToDisplay: Integer; const startPageToExport: Integer; const totalPagesToExport: Integer);
    

    导出当前Excel工作簿的活动工作表。您可以定义要打印的第一页和全局页数,以便Excel文件的页眉和页脚上的页码与PDF上的实际页数相对应。

    参数

    startPageToDisplay Excel文件的页眉和页脚将显示的第一页。 如果您只导出一个表格到PDF文件,这个值可以是1。如果要将多个工作表导出到同一个PDF文件,则需要将startPageToDisplay设置为PDF上的实际页面。

    totalPagesToDisplay 在Excel页眉和页脚上显示的总页数。 如果您只将一个表格导出到PDF文件,将其设置为 -1,它将自动计算。 如果没有,请在这里提供文件的总页数,以便 FlexCel 可以显示诸如“page 1 of 50”之类的页脚。

    startPageToExport 要导出的文件的第一页(第一页为 1)。默认值 1

    totalPagesToExport 将导出多少页。 如果在此处指定负数,则将导出 startPageToExport 中的所有页面。默认值 -1

    startPageToDisplay 是 Excel页眉和页脚中的 &[页码]

    totalPagesToDisplay 是 Excel页眉和页脚中的 &[总页数]

    startPageToDisplay是相对于startPageToPrint的页码,表示导出的第1页的 &[页码]startPageToPrint开始

    • startPageToPrint = 10, startPageToDisplay = 1,表示导出的第1页的页眉和页脚页码从10开始
    • startPageToPrint = 10, startPageToDisplay = 2,表示导出的第1页的页眉和页脚页码从11开始
    • startPageToPrint = 10, startPageToDisplay = -9,表示导出的第1页的页眉和页脚页码从1开始

    totalPagesToDisplaytotalPagesToPrint值为-1时与TotalPagesInSheet相等

    TFlexCelPdfExport.EndExport

    procedure EndExport;
    

    将预告片信息写入PDF文件。始终在调用 BeginExport 后调用此方法。

    TFlexCelPdfExport.TotalPagesInSheet

    function TotalPagesInSheet: Integer;
    

    返回活动工作表导出为PDF时将使用的页数。

    只有调用BeginExport后才能调用TotalPagesInSheet

    TFlexCelPdfExport.ExportAllVisibleSheets

    procedure ExportAllVisibleSheets(const resetPageNumberOnEachSheet: Boolean; const bookmarkName: string);
    procedure ExportAllVisibleSheets(const fileName: string; const resetPageNumberOnEachSheet: Boolean; const bookmarkName: string);
    

    将Excel文件中的所有可见工作表导出为PDF。

    与为每个工作表调用 ExportSheet 不同,此方法可以保持每个工作表上的页码增长,而无需重新设置。

    ExportAllVisibleSheets(string, Boolean, string)此方法是创建文件流的快捷方式,在文件流上先调用 BeginExport,再调用 ExportAllVisibleSheets(Boolean, string),然后调用 EndExport

    参数

    fileName 要导出的文件。

    resetPageNumberOnEachSheet 如果为true,则每个新工作表都将重置Excel页眉和页脚上显示的页码。

    bookmarkName 如果不为空,则每个工作表都将作为一个条目添加到PDF文件中的书签上,并使用此处指定的名称。

    如果希望打开pdf文件时书签窗口可见,请设置 TPdfWriter.PageLayout = TPageLayout

    使用 GetBookmarkInformation 事件进一步自定义每个条目中的内容 。

    例子

    简单导出到PDF

    uses VCL.FlexCel.Core, FlexCel.XlsAdapter, FlexCel.Render;
    
    procedure TForm1.Button15Click(Sender: TObject);
    var
      Xls: TXlsFile;
      Pdf: TFlexCelPdfExport;
    begin
      //读取Excel文件
      Xls := TXlsFile.Create('C:\Users\Administrator\Desktop\ceshi.xlsx');
      //关联导出的文档
      Pdf := TFlexCelPdfExport.Create(Xls, True);
      try
        //设置要导出的工作表
        Xls.ActiveSheetByName := 'Sheet2';
        //导出当前活动的工作表到文件
        Pdf.Export('C:\Users\Administrator\Desktop\ceshi.pdf');
      finally
        Pdf.Free;
        Xls.Free;
      end;
    end;
    

    复杂导出到PDF

    uses VCL.FlexCel.Core, FlexCel.XlsAdapter, FlexCel.Render;
    
    procedure TForm1.Button16Click(Sender: TObject);
    var
      Xls: TXlsFile;
      Pdf: TFlexCelPdfExport;
      Stream: TMemoryStream;
    begin
      //读取Excel文件(excel中页眉或页脚设置“&[页码]”“&[总页数]”时显示页数)
      Xls := TXlsFile.Create('C:\Users\Administrator\Desktop\ceshi.xlsx');
      //关联导出文档
      Pdf := TFlexCelPdfExport.Create(Xls);
      Stream := TMemoryStream.Create;
      try
        Pdf.BeginExport(Stream);
        try
          //ExportSheet函数
          //参数startPageToDisplay是相对于startPageToPrint的页码,从1开始
          //startPageToPrint = 6,startPageToDisplay = 1,表示第1页的页码从6开始
          //参数totalPagesToDisplay与totalPagesToPrint值为-1时与TotalPagesInSheet相等
          //导出第1个工作表的6-10页(页眉显示第6页,共10页)
          Xls.ActiveSheet := 1;
          Pdf.ExportSheet(1, 10, 6, 5);
          //导出第2个工作表的6-10页(页眉显示第1页,共5页)
          Xls.ActiveSheet := 2;
          Pdf.ExportSheet(-4, 5, 6, 5);
          //导出第3个工作表10页后的(页眉显示第11页,共[Doc.TotalPagesInSheet]页)
          Xls.ActiveSheet := 3;
          Pdf.ExportSheet(1, Pdf.TotalPagesInSheet, 11, -1);
        finally
          Pdf.EndExport;
        end;
        Stream.SaveToFile('C:\Users\Administrator\Desktop\ceshi.pdf');
      finally
        Pdf.Free;
        Xls.Free;
        Stream.Free;
      end;
    end;
    

    可见工作表导出到PDF

    uses VCL.FlexCel.Core, FlexCel.XlsAdapter, FlexCel.Render;
    
    procedure TForm1.Button17Click(Sender: TObject);
    var
      Xls: TXlsFile;
      Pdf: TFlexCelPdfExport;
      Stream: TMemoryStream;
    begin
      //读取Excel文件
      Xls := TXlsFile.Create('C:\Users\Administrator\Desktop\ceshi.xlsx');
      //关联导出的文档
      Pdf := TFlexCelPdfExport.Create(Xls, True);
      Stream := TMemoryStream.Create;
      try
        //导出所有可见工作表到文件
        Pdf.ExportAllVisibleSheets('C:\Users\Administrator\Desktop\ceshi1.pdf', True, '');
        //导出所有可见工作表到流
        Pdf.BeginExport(Stream);
        Pdf.ExportAllVisibleSheets(True, '');
        Pdf.EndExport;
        //将流数据保存到文件
        Stream.SaveToFile('C:\Users\Administrator\Desktop\ceshi2.pdf');
      finally
        Pdf.Free;
        Xls.Free;
        Stream.Free;
      end;
    end;
    
  • 相关阅读:
    小程序返回顶部top滚动
    创建对象的几种模式
    前端基础常识
    三行代码让页面中的所有元素增添不同颜色的外边框
    纯css制作小三角
    设计表单
    纯css制作三级菜单
    三栏-中栏流动布局
    三栏固定布局(为栏设定内边距和边框)
    ie8以下不兼容h5新标签的解决方法
  • 原文地址:https://www.cnblogs.com/txgh/p/16630188.html
Copyright © 2020-2023  润新知