首页 > 其他分享 >delphi TMS FlexCel 导出PDF

delphi TMS FlexCel 导出PDF

时间:2022-08-27 11:34:19浏览次数:58  
标签:const FlexCel Excel delphi 导出 Pdf PDF Xls

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;

标签:const,FlexCel,Excel,delphi,导出,Pdf,PDF,Xls
From: https://www.cnblogs.com/txgh/p/16630188.html

相关文章

  • # autoit 自动翻译并附注 pdf中不认识的单词
    autoit自动翻译并附注pdf中不认识的单词学印尼语遇到一个问题,即需要大量复制pdf文本中的个别单词到谷歌翻译中,这个过程需要重复点击和按键,及其耗费时间,为此写了一个脚本......
  • 银行对账单PDF一页拆分多页
    一个页拆分多个页,按照流水Stringbank="{\n"+"\t\"bank\":[\n"+"\t\t{\n"+"\t\t\t\"name\":\"中国农业......
  • golang html转pdf
    url:=""res,err:=http.Get(url)iferr!=nil{fmt.Fprintf(os.Stderr,"fetch:%v",err)os.Exit(1)}//读取资源数据body:[]bytebody,err:=iou......
  • 批量提取pdf内的特定数据
    批量提取pdf内的特定数据需求介绍实习的时候需要提取大量pdf内的日期,本身只是一个劳动力较大的工作,但是不想浪费太多时间,所以写了个程序直接呈现出来,节约时间。需要注意......
  • 数据结构与算法分析--C语言描述 pdf
    高清扫描版下载链接:https://pan.baidu.com/s/1BGsOOAOqXE9j509OFtkjXA点击这里获取提取码书中详细介绍了当前流行的论题和新的变化,讨论了算法设计技巧,并在研究算法的性能......
  • 网络是怎样连接的 pdf
    高清扫描版下载链接:https://pan.baidu.com/s/1OiVBwYKoRi2uJ4-mYf69mw点击这里获取提取码本书以探索之旅的形式,从在浏览器中输入网址开始,一路追踪了到显示出网页内容为止......
  • 图解tcpip(第5版) pdf
    高清扫描版下载链接:https://pan.baidu.com/s/16Owjujj9v7AHYp408FHgKg点击这里获取提取码这是一本图文并茂的网络管理技术书籍,旨在让广大读者理解TCP/IP的基本知识、掌握......
  • 数据结构与算法分析 Java版 pdf
    高清扫描版下载链接:https://pan.baidu.com/s/1vDsOy1E0kHizahB6hIg2tA点击这里获取提取码本书以Java语言为基础,讨论了数据结构的线性结构和非线性结构及其实现,全书以Java......
  • 《零起点Python机器学习快速入门》PDF高清版下载
    《零起点Python机器学习快速入门》PDF高清版下载地址  内容简介  · · · · · ·《零起点Python机器学习快速入门》采用独创的黑箱模式,MBA案例教学机......
  • Delphi 高低字节交换
    内存中的字节顺序与网络传输的字节顺序是不一样的,用名词说就是大端存储和小端存储的区别,有时候就需要转换。Delphi7不支持inline内联函数,可以把inline去掉。functionSwa......