HotXLS-dokumentation

WriteCells metod

Fyller ett område i ett klassiskt XLS-kalkylblad genom att anropa applikationskoden för varje cellvärde

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;

Anmärkningar

Strängöverlagringen tar ett A1-format område, till exempel A1:C100. Den numeriska överlagringen använder ettbaserade rad- och kolumnindex. Områden normaliseras när startrad eller startkolumn är större än slutrad eller slutkolumn
Cellerna begärs i radordning. Sätt Value i callbacken för att skriva den aktuella cellen. Sätt Skip till True för att lämna den aktuella cellen oförändrad. Sätt Cancel till True för att avbryta efter det aktuella anropet. Returvärdet är antalet skrivna celler
Metoden skriver in i den inlästa kalkylbladsmodellen. Det är en kompakt callback-baserad skrivhjälp, inte ett strömbaserat sparläge

Exempel

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);

Typade rad- och kolumnskrivare

TXLSWorksheet och TXLSXWorksheet accepterar även öppna numeriska, sträng- och variantarrayer utan en callback per cell
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;
Koordinaterna är ettbaserade. Värdena fortsätter åt höger för radskrivare och nedåt för kolumnskrivare. Skrivningar klipps vid det aktiva filformatets rad- eller kolumngräns, ogiltiga startkoordinater returnerar noll, och resultatet är antalet skrivna värden. XLSX-skrivarna växer samlingskapaciteten geometriskt över upprepade batcher
Revenue[0] := 1250.0;
Revenue[1] := 980.5;
Revenue[2] := 1425.25;
Written := Sheet.WriteFloatColumnValues(2, 4, Revenue);

Se även