Vult een klassiek XLS-werkbladbereik door applicatiecode aan te roepen voor elke celwaarde
Syntaxis
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;
Opmerkingen
The string overload accepts an A1-style range such as A1:C100. The numeric overload uses 1-based row en column indexes. Ranges are normalized when the start row of column is greater than the end row of column
Cellen worden in rij-gewijze volgorde opgevraagd. Stel Value in de callback in om de huidige cel te schrijven. Stel Skip in op True om de huidige cel ongewijzigd te laten. Stel Cancel in op True om na de huidige callback te stoppen. De retourwaarde is het aantal geschreven cellen
Deze methode schrijft in het geladen werkbladmodel. Het is een compacte callbackgebaseerde schrijfhelper, geen file-streaming opslagmodus
Voorbeeld
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);
Getypeerde rij- en kolomschrijvers
TXLSWorksheet en TXLSXWorksheet accepteren ook open numerieke, tekenreeks- en variant-arrays zonder per-cel 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;
De coördinaten zijn op 1 gebaseerd. Waarden lopen voor rij-writers naar rechts en voor kolom-writers omlaag. Schrijfacties worden afgekapt op de rij- of kolomlimiet van het actieve bestandsformaat, ongeldige startcoördinaten geven nul terug, en het resultaat is het aantal weggeschreven waarden. XLSX-writers laten de collectiecapaciteit geometrisch groeien over herhaalde batches heen
Revenue[0] := 1250.0;
Revenue[1] := 980.5;
Revenue[2] := 1425.25;
Written := Sheet.WriteFloatColumnValues(2, 4, Revenue);
Zie ook