Preenche um intervalo de planilha XLS clássica chamando código de aplicação para cada valor de célula
Sintaxe
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;
Observações
A sobrecarga de string aceita um intervalo no estilo A1 como A1:C100. A sobrecarga numérica usa índices de linha e coluna baseados em 1. Os intervalos são normalizados quando a linha ou coluna inicial é maior que a linha ou coluna final
As células são solicitadas em ordem de linha principal. Defina Value no callback para gravar a célula atual. Defina Skip como True para deixar a célula atual inalterada. Defina Cancel como True para parar após o callback atual. O valor de retorno é o número de células gravadas
Este método grava no modelo de planilha carregado. É um auxiliar de gravação compacto baseado em callback, não um modo de salvamento de streaming de arquivo
Exemplo
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);
Gravadores de linha e coluna tipados
TXLSWorksheet e TXLSXWorksheet também aceitam arrays abertos de números, strings e variants sem callback por célula
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;
As coordenadas são com base 1. Os valores continuam para a direita nos gravadores de linha e para baixo nos gravadores de coluna. As gravações são limitadas ao limite de linha ou coluna do formato de arquivo ativo, coordenadas iniciais inválidas retornam zero, e o resultado é a quantidade de valores gravados. Os gravadores XLSX aumentam a capacidade da coleção geometricamente entre lotes repetidos
Revenue[0] := 1250.0;
Revenue[1] := 980.5;
Revenue[2] := 1425.25;
Written := Sheet.WriteFloatColumnValues(2, 4, Revenue);
Veja também