Riempie un intervallo del foglio di lavoro XLS classico richiamando il codice dell'applicazione per ogni valore di cella
Sintassi
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;
Osservazioni
L'overload con stringa accetta un intervallo in stile A1 come A1:C100. L'overload numerico usa indici di riga e colonna a base uno. Gli intervalli vengono normalizzati quando la riga o la colonna iniziale è maggiore di quella finale
Le celle vengono richieste in ordine riga per riga. Impostare Value nella callback per scrivere la cella corrente. Impostare Skip su True per lasciare invariata la cella corrente. Impostare Cancel su True per fermarsi dopo la callback corrente. Il valore restituito è il numero di celle scritte
Questo metodo scrive nel modello del foglio di lavoro caricato. È un helper di scrittura compatto basato su callback, non una modalità di salvataggio con streaming su file
Esempio
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);
Writer tipizzati per righe e colonne
TXLSWorksheet e TXLSXWorksheet accettano anche array aperti numerici, di stringhe e variant senza callback per singola cella
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;
Le coordinate sono a base uno. I valori proseguono verso destra per i writer di riga e verso il basso per i writer di colonna. Le scritture vengono troncate al limite di righe o colonne del formato file attivo, le coordinate iniziali non valide restituiscono zero e il risultato è il numero di valori scritti. I writer XLSX fanno crescere geometricamente la capacità delle raccolte tra batch ripetuti
Revenue[0] := 1250.0;
Revenue[1] := 980.5;
Revenue[2] := 1425.25;
Written := Sheet.WriteFloatColumnValues(2, 4, Revenue);
Vedere Also