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 之前插入和复制工作表CopyFrom,SheetCount 次。 要插入空白工作表,请设置 CopyFrom = 0
。
InsertAndCopySheets(Int32Array, Integer, TExcelFile)
在 InsertBefore 之前插入和复制CopyFrom 数组中的所有工作表到另一个工作簿中。
InsertAndCopySheets(Integer, Integer, Integer, TExcelFile)
在 InsertBefore 之前插入和复制工作表CopyFrom,SheetCount 次。 如果 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)
不能为null。InsertAndCopySheets(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;