Заполняет диапазон классического листа XLS, вызывая код приложения для каждого значения ячейки
Синтаксис
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;
Примечания
Строковая перегрузка принимает диапазон в стиле A1, например A1:C100. Числовая перегрузка использует индексы строк и столбцов с отсчётом от 1. Диапазоны нормализуются, если начальная строка или столбец больше конечной строки или столбца
Ячейки запрашиваются в порядке строк. Задайте Value в обратном вызове для записи текущей ячейки. Установите Skip в True , чтобы оставить текущую ячейку без изменений. Установите Cancel в True , чтобы остановить обработку после текущего обратного вызова. Возвращаемое значение — количество записанных ячеек
Данный метод выполняет запись в загруженную модель листа. Это компактный вспомогательный инструмент записи на основе обратных вызовов, а не потоковый режим сохранения файла
Пример
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);
См. также
TXLSWorksheet and TXLSXWorksheet также принимают открытые числовые, строковые и variant-массивы без поячеечного колбэка
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;
Координаты отсчитываются с единицы. Значения идут вправо для строчных писателей и вниз для столбцовых. Запись обрезается по пределу строк или столбцов активного формата файла, невалидные стартовые координаты возвращают ноль, а результат — количество записанных значений. XLSX-писатели наращивают ёмкость коллекций геометрически между повторными батчами
Revenue[0] := 1250.0;
Revenue[1] := 980.5;
Revenue[2] := 1425.25;
Written := Sheet.WriteFloatColumnValues(2, 4, Revenue);
See Also