delphi TMS FlexCel Sheet工作表新增复制

TMS FlexCel Sheet工作表新增复制

属性和方法

TExcelFile.AddSheet

procedure AddSheet;

在文件末尾插入一个空工作表。

这相当于调用 InsertAndCopySheets(0, SheetCount + 1, 1)。如果您需要插入多个工作表,或者将其插入现有工作表的中间,请使用 InsertAndCopySheets(Integer, Integer, Integer) 代替。

TXlsFile.InsertAndCopySheets

procedure InsertAndCopySheets(const copyFrom: Integer; const insertBefore: Integer; const aSheetCount: Integer); 
procedure InsertAndCopySheets(const copyFrom: TArray<Int32>; const insertBefore: Integer; const sourceWorkbook: TExcelFile);
procedure InsertAndCopySheets(const copyFrom: Integer; const insertBefore: Integer; const aSheetCount: Integer; const sourceWorkbook: TExcelFile);

插入和复制工作表。

重载

InsertAndCopySheets(Integer, Integer, Integer)

InsertBefore 之前插入和复制工作表CopyFromSheetCount 次。 要插入空白工作表,请设置 CopyFrom = 0

InsertAndCopySheets(Int32Array, Integer, TExcelFile)

InsertBefore 之前插入和复制CopyFrom 数组中的所有工作表到另一个工作簿中。

InsertAndCopySheets(Integer, Integer, Integer, TExcelFile)

InsertBefore 之前插入和复制工作表CopyFromSheetCount 次。 如果 sourceWorkbook 不为空,则将从另一个文件复制工作表。 要插入空白工作表,请设置 CopyFrom=0

参数

copyFrom Integer 我们要从中复制的工作表的工作表索引(基于 1)。 将其设置为 0 以插入空工作表。

copyFrom TArray<Int32> 我们要从中复制的所有工作表的工作表索引(基于 1)。

insertBefore 我们将在其之前插入的工作表(基于 1)。 这可能是 SheetCount + 1,插入到工作簿的末尾。

aSheetCount 将复制工作表 copyFrom 的次数。 请注意,这不是要复制的最后一个工作表,而是单个工作表要复制多少次。 这意味着,例如 InsertAndCopySheets(3, 1, 7) 将插入7个sheet3的副本,而不是将sheet3 复制到 10。

sourceWorkbook 将从中复制工作表的工作簿。InsertAndCopySheets(Int32Array, Integer, TExcelFile) 不能为nullInsertAndCopySheets(Integer, Integer, Integer, TExcelFile)从同一文件复制时为null

当从另一个文件复制工作表,所使用的算法不如从同一文件复制时高效。 尽可能不要从不同的文件中复制。

仅当从 2 个不同的文件复制时才使用InsertAndCopySheets(Int32Array, Integer, TExcelFile) 方法。如果你有一个公式“=Sheet2!A1”在 Sheet1,而在 Sheet2 中有另一个公式“=Sheet1!A1”,则需要使用此方法复制它们,因为逐个复制它们(使用标准的 InsertAndCopySheets(Integer, Integer, Integer, TExcelFile) 方法)将返回找不到公式引用的错误。

你也可以使用 TExcelFile.ConvertFormulasToValues(Boolean) 方法来避免在工作簿之间复制公式。

例子

新增和复制

uses VCL.FlexCel.Core, FlexCel.XlsAdapter;

procedure TForm1.Button12Click(Sender: TObject);
var
  Xls1, Xls2: TXlsFile;
begin
  //读取Excel文件
  Xls1 := TXlsFile.Create('C:\Users\Administrator\Desktop\ceshi1.xlsx');
  //创建一个新的空Excel文件
  //(Sheet1空白页)
  Xls2 := TXlsFile.Create(1, TExcelFileFormat.v2019, true);
  try
    //在Xls2最后新增两个空白页
    //(可以通过调用2次 AddSheet 实现)
    //效果 Sheet1-空白页|Sheet2-空白页|Sheet3-空白页
    Xls2.InsertAndCopySheets(0, Xls2.SheetCount + 1, 2);
    //复制Xls1的第3个Sheet到Xls2的第2个Sheet前
    //效果 Sheet1-空白页|Sheet4-Xls2的Sheet3|Sheet2-空白页|Sheet3-空白页
    Xls2.InsertAndCopySheets(3, 2, 1, Xls1);
    //复制Xls2的第2个Sheet到第4个Sheet前
    //效果 Sheet1-空白页|Sheet4-Xls1的Sheet3|Sheet2-空白页|Sheet5-Sheet4相同|Sheet3-空白页
    Xls2.InsertAndCopySheets(2, 4, 1);
    //保存文件
    Xls2.Save('C:\Users\Administrator\Desktop\ceshi2.xlsx');
  finally
    Xls1.Free;
    Xls2.Free;
  end;
end;
posted @ 2022-08-06 10:28  txgh  阅读(332)  评论(0编辑  收藏  举报