Wypełnia zakres arkusza Classic XLS, wywołując kod aplikacji dla wartości każdej komórki
Składnia
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;
Uwagi
Wariant tekstowy przyjmuje zakres w notacji A1, na przykład A1:C100. Wariant numeryczny użyje indeksów wiersza i kolumny numerowanych od 1. Zakresy są normalizowane, gdy wiersz lub kolumna początkowa jest większa od końcowej
Komórki są zgłaszane w kolejności wiersz-po-wierszu. Ustaw Value w callbacku, aby zapisać bieżącą komórkę. Ustaw Skip na True, aby pozostawić bieżącą komórkę bez zmian. Ustaw Cancel na True, aby przerwać po bieżącym wywołaniu callbacku. Wartością zwrotną jest liczba zapisanych komórek
Ta metoda zapisuje do wczytanego modelu arkusza. To zwięzły pomocnik zapisu oparty na callbackach, a nie tryb zapisu ze strumieniowaniem pliku
Przykład
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);
Typowane pisarze wierszy i kolumn
TXLSWorksheet i TXLSXWorksheet przyjmują też otwarte tablice liczbowe, tekstowe i variant bez callbacku per komórka
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;
Współrzędne są numerowane od 1. Dla pisarzy wierszy wartości biegną w prawo, a dla pisarzy kolumn — w dół. Zapisy są przycinane do limitu wierszy lub kolumn aktywnego formatu pliku, nieprawidłowe współrzędne początkowe zwracają zero, a wynikiem jest liczba zapisanych wartości. Pisarze XLSX powiększają pojemność kolekcji geometrycznie przy kolejnych partiach
Revenue[0] := 1250.0;
Revenue[1] := 980.5;
Revenue[2] := 1425.25;
Written := Sheet.WriteFloatColumnValues(2, 4, Revenue);
Zobacz też