• delphi TMS FlexCel 打印Excel


    TMS FlexCel 打印Excel

    属性和方法

    TFlexCelPrintDocument

    使用此类以本机方式打印 Excel 文件。

    此类使用Delphi中标准Printer对象的设置,因此要更改大多数设置,您应该更改Printer的设置。您还可以使用标准的 Delphi PrintDialog 来允许用户选择打印机和参数。

    unit

    FlexCel.Render

    TFlexCelPrintDocument.Create

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

    constructor Create(const aWorkbook: TExcelFile);
    

    参数

    aWorkbook 包含此组件将打印的数据的Excel文件。

    TFlexCelPrintDocument.TotalPagesInSheet

    function TotalPagesInSheet: Integer;
    

    返回活动工作表在打印的页数。

    TFlexCelPrintDocument.BeginPrint

    procedure BeginPrint(const VPrinter: TAbstractPrinter = nil);
    

    初始化打印引擎。 在调用这个方法之后,您可以调用PrintSheet来打印不同的xls文件,或者PrintAllVisibleSheets。 您应该始终通过调用 EndPrint 来结束打印。

    参数

    VPrinter TPrinter 对象的封装。通常情况下,您不需要指定此参数或将其保留为空。默认值 nil

    TFlexCelPrintDocument.EndPrint

    procedure EndPrint;
    

    完成打印过程。您应该总是调用这个方法。

    TFlexCelPrintDocument.PrintSheet

    procedure PrintSheet;
    procedure PrintSheet(const startPageToDisplay: Integer; totalPagesToDisplay: Integer; startPageToPrint: Integer = 1; totalPagesToPrint: Integer = -1);
    

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

    参数

    startPageToDisplay xls 文件上的页眉和页脚将显示的第一页。 如果只打印一张表,这个值可以是1。如果在同一过程中导出多个工作表,则需要设置为打印输出中的实际页面。

    totalPagesToDisplay 在 Excel 页眉和页脚上显示的总页数。 如果只打印一张工作表,将其设置为-1,它将自动计算。 如果没有,请在此处提供文件的总页数,以便 FlexCel 可以显示诸如“page 1 of 50”之类的页脚。

    startPageToPrint 要打印的文件的第一页(第一页为 1)。默认值 1

    totalPagesToPrint 将打印多少页。 如果在此处指定负数,则将打印 startPageToPrint 后的所有页面。默认值 -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相等

    TFlexCelPrintDocument.Print

    procedure TFlexCelPrintDocument.Print;
    

    打印相关xls工作簿的活动工作表。

    该方法是调用BeginPrint/PrintSheet/EndPrint的快捷方式。

    TFlexCelPrintDocument.PrintAllVisibleSheets

    procedure PrintAllVisibleSheets(const resetPageNumberOnEachSheet: Boolean; startPageToPrint: Integer = 1; totalPagesToPrint: Integer = -1); virtual;
    

    此方法将打印 xls 文件上的所有可见工作表。 与为每个工作表调用PrintSheet不同,此方法可以使每个工作表上的页码保持增长,而无需重置。

    参数

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

    startPageToPrint 要打印的文件的第一页(第一页为 1)。默认值 1

    totalPagesToPrint 将打印多少页。 如果在此处指定负数,则将打印 startPageToPrint 中的所有页面。默认值 -1

    例子

    简单打印

    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;
    

    复杂打印

    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页,共[Doc.TotalPagesInSheet]页)
          Xls.ActiveSheet := 3;
          Doc.PrintSheet(1, Doc.TotalPagesInSheet, 11, -1);
        finally
          Doc.EndPrint;
        end;
      finally
        Doc.Free;
        Xls.Free;
      end;
    end;
    
  • 相关阅读:
    Oracle数据库-建库、建表空间,建用户
    创建oracle数据库的表空间、用户、目录、导入导出文件等信息
    使用 UML 进行业务建模:理解业务用例与系统用例的相似和不同之处
    DataSet用法详细
    DataSet和DataTable详解
    经典SQL语句集锦
    JS脚本验证大全
    用Unity写一个12306验证器的恶搞图生成软件
    SQL Server中 sysobjects、syscolumns、systypes
    如何在oracle中导入导出(备份&恢复)dmp数据库文件
  • 原文地址:https://www.cnblogs.com/txgh/p/16501752.html
Copyright © 2020-2023  润新知