Rellena un rango de hoja de cálculo XLS clásica llamando al código de la aplicación para cada valor de 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 de estilo A1 como A1:C100. La sobrecarga numérica usa índices de fila y columna de base 1. 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 el callback para escribir la celda actual. Establezca Skip en True para dejar la celda actual sin cambios. Establezca Cancel en True para detenerse después del callback actual. El valor devuelto es el número de celdas escritas
Este método escribe en el modelo de la hoja de cálculo cargada. Es un asistente de escritura compacto basado en callback, 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 con tipos por fila y columna
TXLSWorksheet y TXLSXWorksheet también aceptan matrices abiertas de números, cadenas y variantes sin un callback 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 son de base 1. 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);
Ver también