Documentazione HotXLS

WriteCells metodo

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