Documentação do HotXLS

Método WriteCells

Preenche um intervalo de folha de cálculo XLS clássico chamando o código da 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 cadeia aceita um intervalo no estilo A1, como A1:C100. A sobrecarga numérica utiliza índices de linha e coluna de base 1. Os intervalos são normalizados quando a linha ou coluna de início é maior que a linha ou coluna de fim
As células são pedidas em ordem de linha principal. Defina Value no retorno de chamada para escrever a célula actual. Defina Skip como True para deixar a célula actual inalterada. Defina Cancel como True para parar após o retorno de chamada actual. O valor de retorno é o número de células escritas
Este método escreve no modelo de folha de cálculo carregado. É um auxiliar de escrita baseado em retorno de chamada compacto, não um modo de gravação em fluxo de ficheiro

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

Escritores tipados de linhas e colunas

TXLSWorksheet e TXLSXWorksheet também aceitam matrizes abertas 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 de base 1. Os valores continuam para a direita nos escritores de linhas e para baixo nos escritores de colunas. As escritas são cortadas no limite de linhas ou colunas do formato de ficheiro ativo, coordenadas iniciais inválidas devolvem zero e o resultado é o número de valores escritos. Os escritores XLSX aumentam a capacidade das coleções de forma geométrica ao longo de lotes repetidos
Revenue[0] := 1250.0;
Revenue[1] := 980.5;
Revenue[2] := 1425.25;
Written := Sheet.WriteFloatColumnValues(2, 4, Revenue);

Ver também