TMS FlexCel 导出进度条
属性和方法
TFlexCelPdfExport.Progress
property Progress: TFlexCelPdfExportProgress
导出进度。可以从其他线程或AfterGeneratePage
事件访问此变量。
TFlexCelPdfExport.AfterGeneratePage
property AfterGeneratePage: TPageEventHandler
生成每个新页面并且将所有内容写入页面之后触发。 可以使用此事件在页面内容的顶部添加一些文本或图像。
TFlexCelPdfExportProgress.Page
property Page: Integer
正在写入的页面。
TFlexCelPdfExportProgress.TotalPage
property TotalPage: Integer
导出的总页数。
例子
导出工作表进度条处理
在窗体上放置TProgressBar组件ProgressBar1
在TForm1
的private中增加方法PdfAfterGeneratePage
uses VCL.FlexCel.Core, FlexCel.XlsAdapter, FlexCel.Render;
private
procedure PdfAfterGeneratePage(const sender: TObject; const e: TPageEventArgs);
procedure TForm1.PdfAfterGeneratePage(const sender: TObject; const e: TPageEventArgs);
var
Prog: TFlexCelPdfExportProgress;
begin
//获取导出进度
Prog := (Sender as TFlexCelPdfExport).Progress;
//显示导出信息(Prog.TotalPage是当前Sheet总页数,Prog.Page是当前Sheet导出页)
Memo1.Lines.Add('总页数' + Prog.TotalPage.ToString + ' 当前页' + Prog.Page.ToString);
//根据当前页和总页数处理进度条
ProgressBar1.Position := Round(Prog.Page * 100 / Prog.TotalPage);
end;
procedure TForm1.Button24Click(Sender: TObject);
var
Xls: TXlsFile;
Pdf: TFlexCelPdfExport;
Stream: TMemoryStream;
begin
//读取Excel文件
Xls := TXlsFile.Create('C:\Users\Administrator\Desktop\ceshi2.xlsx');
//关联导出的文档
Pdf := TFlexCelPdfExport.Create(Xls, True);
//设置导出每页内容后事件,处理进度条的显示
Pdf.AfterGeneratePage := PdfAfterGeneratePage;
try
//设置要导出的工作表
Xls.ActiveSheetByName := 'Sheet3';
//导出当前活动的工作表到文件
Pdf.Export('C:\Users\Administrator\Desktop\ceshi1.pdf');
finally
Pdf.Free;
Xls.Free;
end;
end;
导出全部工作表进度条处理
在窗体上放置TProgressBar组件ProgressBar1
在TForm1
的private中增加字段FTotalPages
、 FPage
,增加方法PdfAfterGenerateTotalPage
uses VCL.FlexCel.Core, FlexCel.XlsAdapter, FlexCel.Render;
private
FTotalPages: Integer;
FPage: Integer;
procedure PdfAfterGenerateTotalPage(const sender: TObject; const e: TPageEventArgs);
procedure TForm1.PdfAfterGenerateTotalPage(const sender: TObject; const e: TPageEventArgs);
var
Prog: TFlexCelPdfExportProgress;
begin
//获取导出进度
Prog := (Sender as TFlexCelPdfExport).Progress;
FPage := FPage + 1;
//显示导出信息(Prog.TotalPage是当前Sheet总页数,Prog.Page是当前Sheet导出页)
Memo1.Lines.Add('总页数' + FTotalPages.ToString + ' 当前页' + FPage.ToString +
' 当前Sheet总页数' + Prog.TotalPage.ToString + ' 当前Sheet导出页' + Prog.Page.ToString);
//根据当前页和总页数处理进度条
ProgressBar1.Position := Round(FPage * 100 / FTotalPages);
end;
procedure TForm1.Button25Click(Sender: TObject);
var
Xls: TXlsFile;
Pdf: TFlexCelPdfExport;
Stream: TMemoryStream;
I: Integer;
begin
//读取Excel文件
Xls := TXlsFile.Create('C:\Users\Administrator\Desktop\ceshi2.xlsx');
//关联导出的文档
Pdf := TFlexCelPdfExport.Create(Xls, True);
//设置导出每页内容后事件,处理进度条的显示
Pdf.AfterGeneratePage := PdfAfterGenerateTotalPage;
FPage := 0;
FTotalPages := 0;
Stream := TMemoryStream.Create;
try
Pdf.BeginExport(Stream);
//计算总页数
for I := 1 to Xls.SheetCount do
begin
Xls.ActiveSheet := I;
FTotalPages := FTotalPages + Pdf.TotalPagesInSheet;
end;
//导出所有工作表到文件
for I := 1 to Xls.SheetCount do
begin
Xls.ActiveSheet := I;
Pdf.ExportSheet;
end;
finally
Pdf.EndExport;
Pdf.Free;
Xls.Free;
Stream.Free;
end;
end;
标签:TMS,进度条,FlexCel,delphi,导出,Prog,Pdf,Xls
From: https://www.cnblogs.com/txgh/p/16859945.html