各セル値に対してアプリケーションコードを呼び出すことで、従来の 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);
関連項目