通过为每个单元格值回调应用程序代码,填充经典 XLS 工作表区域
语法
type
TXLSCellWriteEvent = procedure(
Sender: TObject;
SheetIndex, Row, Col: Integer;
var Value: Variant;
var Skip: Boolean;
var Cancel: Boolean) of object;
function WriteCells(ARange: WideString; Callback: TXLSCellWriteEvent): Integer; overload;
function WriteCells(ARow1, ACol1, ARow2, ACol2: Integer; Callback: TXLSCellWriteEvent): Integer; overload;
备注
字符串重载接受 A1:C100这样的 A1 样式区域。数字重载使用从 1 开始的行号和列号。当起始行或列大于结束行或列时,区域会被规范化
单元格按行优先顺序请求。在回调中给 Value 赋值即可写入当前单元格;把 Skip 设为 True 可保持当前单元格不变;把 Cancel 设为 True 可在本次回调结束后停止。返回值是已写入的单元格数量
该方法写入已加载的工作表模型,是一个紧凑的基于回调的写入辅助方法,不是文件流式保存模式
示例
procedure TForm1.WriteCell(Sender: TObject; SheetIndex, Row, Col: Integer;
var Value: Variant; var Skip: Boolean; var Cancel: Boolean);
begin
if Col = 3 then
begin
Skip := True;
Exit;
end;
Value := Format('R%dC%d', [Row, Col]);
if Row >= 1000 then
Cancel := True;
end;
Written := Workbook.Sheets[1].WriteCells('A1:D2000', WriteCell);
请参阅
TXLSWorksheet TXLSWorksheet.ForEachCell 方法 TXLSXWorksheet TXLSWorksheet class
function WriteFloatRowValues(ARow, ACol: Integer; const Values: array of Double): Integer;
function WriteStringRowValues(ARow, ACol: Integer; const Values: array of WideString): Integer;
function WriteRowValues(ARow, ACol: Integer; const Values: array of Variant): Integer;
function WriteFloatColumnValues(ARow, ACol: Integer; const Values: array of Double): Integer;
function WriteStringColumnValues(ARow, ACol: Integer; const Values: array of WideString): Integer;
function WriteColumnValues(ARow, ACol: Integer; const Values: array of Variant): Integer;
坐标从 1 开始。行写入器的值向右延续,列写入器的值向下延续。写入会在当前文件格式的行或列上限处裁剪,无效的起始坐标返回 0,结果为已写入的值的数量。XLSX 写入器会在重复批次间按几何级数扩容集合
Revenue[0] := 1250.0;
Revenue[1] := 980.5;
Revenue[2] := 1425.25;
Written := Sheet.WriteFloatColumnValues(2, 4, Revenue);
请参阅