HotXLS-documentatie

WriteCells methode

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