Documentación de HotXLS

WriteCells y escritores masivos tipados

Rellena un rango de hoja de cálculo XLS clásica llamando al código de aplicación para el valor de cada celda

Sintaxis

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;

Observaciones

La sobrecarga de cadena acepta un rango en estilo A1 como A1:C100. La sobrecarga numérica utiliza índices de fila y columna basados en uno. Los rangos se normalizan cuando la fila o columna inicial es mayor que la fila o columna final
Las celdas se solicitan en orden por filas. Establezca Value en la devolución de llamada para escribir la celda actual. Establezca Skip en True para dejar la celda actual sin cambios. Establezca Cancel en True para detenerse después de la devolución de llamada actual. El valor devuelto es el número de celdas escritas
Este método escribe en el modelo de hoja de cálculo cargado. Es un asistente de escritura compacto basado en devoluciones de llamada, no un modo de guardado con streaming de archivos

Ejemplo

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 filas y columnas

TXLSWorksheet y TXLSXWorksheet también aceptan arrays abiertos numéricos, de cadena y variant sin una devolución de llamada por celda
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;
Las coordenadas se basan en uno. Los valores continúan hacia la derecha en los escritores de filas y hacia abajo en los escritores de columnas. Las escrituras se recortan en el límite de filas o columnas del formato de archivo activo, las coordenadas iniciales no válidas devuelven cero y el resultado es el número de valores escritos. Los escritores XLSX hacen crecer la capacidad de las colecciones geométricamente entre lotes repetidos
Revenue[0] := 1250.0;
Revenue[1] := 980.5;
Revenue[2] := 1425.25;
Written := Sheet.WriteFloatColumnValues(2, 4, Revenue);

Véase también