Füllt einen klassischen XLS-Tabellenblattbereich durch Aufrufen von Anwendungscode für jeden Zellenwert
Syntax
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;
Hinweise
Die Zeichenfolge-Überladung akzeptiert einen A1-Stil-Bereich wie A1:C100. Die numerische Überladung verwendet 1-basierte Zeilen- und Spaltenindizes. Bereiche werden normalisiert, wenn die Startzeile oder -spalte größer ist als die Endzeile oder -spalte
Zellen werden in Zeilen-Major-Reihenfolge angefordert. Setzen Sie Value im Rückruf, um die aktuelle Zelle zu schreiben. Setzen Sie Skip auf True, um die aktuelle Zelle unverändert zu lassen. Setzen Sie Cancel auf True, um nach dem aktuellen Rückruf zu stoppen. Der Rückgabewert ist die Anzahl der geschriebenen Zellen
Diese Methode schreibt in das geladene Tabellenblattmodell. Sie ist ein kompakter rückrufbasierter Schreibe-Helfer, kein Datei-Streaming-Speichermodus
Beispiel
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);
Typisierte Zeilen- und Spalten-Writer
TXLSWorksheet und TXLSXWorksheet akzeptieren daneben offene numerische, String- und Variant-Arrays ganz ohne Zell-für-Zell-Callback
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;
Die Koordinaten sind einsbasiert. Bei den Zeilen-Writern laufen die Werte nach rechts, bei den Spalten-Writern nach unten. Geschrieben wird bis zur Zeilen- bzw. Spaltengrenze des aktiven Dateiformats, ungültige Startkoordinaten liefern null, und das Ergebnis ist die Anzahl der geschriebenen Werte. Die XLSX-Writer vergrößern die Sammlungskapazität über wiederholte Batches hinweg geometrisch
Revenue[0] := 1250.0;
Revenue[1] := 980.5;
Revenue[2] := 1425.25;
Written := Sheet.WriteFloatColumnValues(2, 4, Revenue);
Siehe auch