HotXLS Docs

WriteCells 方法

通过为每个单元格值回调应用程序代码,填充经典 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);

请参阅