TMS FlexCel 导出PDF
属性和方法
TFlexCelPdfExport
用于将Excel文件导出为PDF的组件。
unit
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导出为新文件。
调用此方法后,您可以调用
ExportSheet
或ExportAllVisibleSheets(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开始totalPagesToDisplay与totalPagesToPrint值为-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