Udfylder et klassisk XLS-regnearksområde ved at kalde programkoden for hver celleværdi
Syntaks
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;
Bemærkninger
Streng-overloadet accepterer et A1-style område som A1:C100. Det numeriske overload bruger 1-baserede række- og kolonneindeks. Områderne normaliseres, hvis start-rækken eller -kolonnen er større end slut-rækken eller -kolonnen
Cellerne anmodes i række-major-rækkefølge. Sæt Value i callback'en for at skrive den aktuelle celle. Sæt Skip til True for at lade den aktuelle celle være uændret. Sæt Cancel til True for at stoppe efter den aktuelle callback. Returværdien er antallet af skrevne celler
Denne metode skriver i den indlæste regnearksmodel. Det er en kompakt, callback-baseret skrivehjælper, ikke en filstreamende gemmetilstand
Eksempel
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);
Typede række- og kolonne-writere
TXLSWorksheet og TXLSXWorksheet accepterer også åbne numeriske, streng- og variant-arrays uden pr. celle-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;
Koordinaterne er 1-baserede. Værdierne fortsætter mod højre for række-writere og nedad for kolonne-writere. Skrivningerne beskæres ved det aktive fileformats række- eller kolonnegrænse, ugyldige startkoordinater returnerer nul, og resultatet er antallet af skrevne værdier. XLSX-writerne udvider samlingskapaciteten geometrisk på tværs af gentagne batcher
Revenue[0] := 1250.0;
Revenue[1] := 980.5;
Revenue[2] := 1425.25;
Written := Sheet.WriteFloatColumnValues(2, 4, Revenue);
See Also