delphi TMS FlexCel 打印Excel
<h1 id="tms-flexcel-打印excel">TMS FlexCel 打印Excel</h1><h2 id="属性和方法">属性和方法</h2>
<h3 id="tflexcelprintdocument">TFlexCelPrintDocument</h3>
<p>使用此类以本机方式打印 Excel 文件。</p>
<blockquote>
<p>此类使用Delphi中标准<code>Printer</code>对象的设置,因此要更改大多数设置,您应该更改<code>Printer</code>的设置。您还可以使用标准的 Delphi <code>PrintDialog</code> 来允许用户选择打印机和参数。</p>
</blockquote>
<p><strong>unit</strong></p>
<p>FlexCel.Render</p>
<h3 id="tflexcelprintdocumentcreate">TFlexCelPrintDocument.Create</h3>
<p>创建一个新的 <code>FlexCelPrintDocument</code> 并将其分配给 Excel 文件。</p>
<pre><code class="language-delphi">constructor Create(const aWorkbook: TExcelFile);
</code></pre>
<p><strong>参数</strong></p>
<p><em>aWorkbook</em>包含此组件将打印的数据的Excel文件。</p>
<h3 id="tflexcelprintdocumenttotalpagesinsheet">TFlexCelPrintDocument.TotalPagesInSheet</h3>
<pre><code class="language-delphi">function TotalPagesInSheet: Integer;
</code></pre>
<p>返回活动工作表在打印的页数。</p>
<h3 id="tflexcelprintdocumentbeginprint">TFlexCelPrintDocument.BeginPrint</h3>
<pre><code class="language-delphi">procedure BeginPrint(const VPrinter: TAbstractPrinter = nil);
</code></pre>
<p>初始化打印引擎。 在调用这个方法之后,您可以调用<code>PrintSheet</code>来打印不同的xls文件,或者<code>PrintAllVisibleSheets</code>。 您应该始终通过调用 <code>EndPrint</code> 来结束打印。</p>
<p><strong>参数</strong></p>
<p><em>VPrinter</em> <code>TPrinter</code> 对象的封装。通常情况下,您不需要指定此参数或将其保留为空。<strong>默认值</strong> <em>nil</em>。</p>
<h3 id="tflexcelprintdocumentendprint">TFlexCelPrintDocument.EndPrint</h3>
<pre><code class="language-delphi">procedure EndPrint;
</code></pre>
<p>完成打印过程。您应该总是调用这个方法。</p>
<h3 id="tflexcelprintdocumentprintsheet">TFlexCelPrintDocument.PrintSheet</h3>
<pre><code class="language-delphi">procedure PrintSheet;
procedure PrintSheet(const startPageToDisplay: Integer; totalPagesToDisplay: Integer; startPageToPrint: Integer = 1; totalPagesToPrint: Integer = -1);
</code></pre>
<p>打印当前Xls工作簿的活动工作表。 您可以定义要打印的第一页和全局页数,以便 excel 文件的页眉和页脚上的页码与打印输出上的实际页数相对应。</p>
<p><strong>参数</strong></p>
<p><em>startPageToDisplay</em>xls 文件上的页眉和页脚将显示的第一页。 如果只打印一张表,这个值可以是1。如果在同一过程中导出多个工作表,则需要设置为打印输出中的实际页面。</p>
<p><em>totalPagesToDisplay</em>在 Excel 页眉和页脚上显示的总页数。 如果只打印一张工作表,将其设置为-1,它将自动计算。 如果没有,请在此处提供文件的总页数,以便 FlexCel 可以显示诸如“page 1 of 50”之类的页脚。</p>
<p><em>startPageToPrint</em>要打印的文件的第一页(第一页为 1)。<strong>默认值</strong> <em>1</em>。</p>
<p><em>totalPagesToPrint</em>将打印多少页。 如果在此处指定负数,则将打印 <em>startPageToPrint</em> 后的所有页面。<strong>默认值</strong> <em>-1</em>。</p>
<blockquote>
<p><em>startPageToDisplay</em> 是 Excel页眉和页脚中的 <code>&[页码]</code></p>
<p><em>totalPagesToDisplay</em> 是 Excel页眉和页脚中的 <code>&[总页数]</code></p>
<p><em>startPageToDisplay</em>是相对于<em>startPageToPrint</em>的页码,表示打印的第1页的 <code>&[页码]</code>从<em>startPageToPrint</em>开始</p>
<ul>
<li><code>startPageToPrint = 10, startPageToDisplay = 1</code>,表示打印的第1页的页眉和页脚页码从10开始</li>
<li><code>startPageToPrint = 10, startPageToDisplay = 2</code>,表示打印的第1页的页眉和页脚页码从11开始</li>
<li><code>startPageToPrint = 10, startPageToDisplay = -9</code>,表示打印的第1页的页眉和页脚页码从1开始</li>
</ul>
<p><em>totalPagesToDisplay</em>与<em>totalPagesToPrint</em>值为-1时与<code>TotalPagesInSheet</code>相等</p>
</blockquote>
<h3 id="tflexcelprintdocumentprint">TFlexCelPrintDocument.Print</h3>
<pre><code class="language-delphi">procedure TFlexCelPrintDocument.Print;
</code></pre>
<p>打印相关xls工作簿的活动工作表。</p>
<blockquote>
<p>该方法是调用<code>BeginPrint</code>/<code>PrintSheet</code>/<code>EndPrint</code>的快捷方式。</p>
</blockquote>
<h3 id="tflexcelprintdocumentprintallvisiblesheets">TFlexCelPrintDocument.PrintAllVisibleSheets</h3>
<pre><code class="language-delphi">procedure PrintAllVisibleSheets(const resetPageNumberOnEachSheet: Boolean; startPageToPrint: Integer = 1; totalPagesToPrint: Integer = -1); virtual;
</code></pre>
<p>此方法将打印 xls 文件上的所有可见工作表。 与为每个工作表调用<code>PrintSheet</code>不同,此方法可以使每个工作表上的页码保持增长,而无需重置。</p>
<p><strong>参数</strong></p>
<p><em>resetPageNumberOnEachSheet</em> 如果为 <em>true</em>,则每个新工作表都将重置 Excel 页眉和页脚上显示的页码。</p>
<p><em>startPageToPrint</em>要打印的文件的第一页(第一页为 1)。<strong>默认值</strong> <em>1</em>。</p>
<p><em>totalPagesToPrint</em>将打印多少页。 如果在此处指定负数,则将打印 <em>startPageToPrint</em> 中的所有页面。<strong>默认值</strong> <em>-1</em>。</p>
<h2 id="例子">例子</h2>
<h3 id="简单打印">简单打印</h3>
<pre><code class="language-delphi">uses VCL.FlexCel.Core, FlexCel.XlsAdapter, FlexCel.Render;
procedure TForm1.Button10Click(Sender: TObject);
var
Xls: TXlsFile;
Doc: TFlexCelPrintDocument;
begin
//读取Excel文件
Xls := TXlsFile.Create('C:\Users\Administrator\Desktop\ceshi.xlsx');
//关联打印文档
Doc := TFlexCelPrintDocument.Create(Xls);
try
//设置要打印的工作表
Xls.ActiveSheetByName := 'Sheet3';
//打印当前活动的工作表
Doc.Print;
finally
Doc.Free;
Xls.Free;
end;
end;
</code></pre>
<h3 id="复杂打印">复杂打印</h3>
<pre><code class="language-delphi">uses VCL.FlexCel.Core, FlexCel.XlsAdapter, FlexCel.Render;
procedure TForm1.Button11Click(Sender: TObject);
var
Xls: TXlsFile;
Doc: TFlexCelPrintDocument;
begin
//读取Excel文件(excel中页眉或页脚设置“&[页码]”“&[总页数]”时显示页数)
Xls := TXlsFile.Create('C:\Users\Administrator\Desktop\ceshi.xlsx');
//关联打印文档
Doc := TFlexCelPrintDocument.Create(Xls);
try
Doc.BeginPrint;
try
//打印所有可见工作表
//Doc.PrintAllVisibleSheets(False);
//PrintSheet函数
//参数startPageToDisplay是相对于startPageToPrint的页码,从1开始
//startPageToPrint = 6,startPageToDisplay = 1,表示第1页的页码从6开始
//参数totalPagesToDisplay与totalPagesToPrint值为-1时与TotalPagesInSheet相等
//打印第1个工作表的6-10页(页眉显示第6页,共10页)
Xls.ActiveSheet := 1;
Doc.PrintSheet(1, 10, 6, 5);
//打印第2个工作表的6-10页(页眉显示第1页,共5页)
Xls.ActiveSheet := 2;
Doc.PrintSheet(-4, 5, 6, 5);
//打印第3个工作表10页后的(页眉显示第11页,共页)
Xls.ActiveSheet := 3;
Doc.PrintSheet(1, Doc.TotalPagesInSheet, 11, -1);
finally
Doc.EndPrint;
end;
finally
Doc.Free;
Xls.Free;
end;
end;
</code></pre><br><br>
来源:https://www.cnblogs.com/txgh/p/16501752.html
頁:
[1]