HotXLS ドキュメント

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 and TXLSXWorksheet は、セルごとのコールバックなしで、オープンな数値/文字列/バリアント配列も受け付けます
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);

See Also