Docs HotXLS

WriteCells-method

Remplit une plage de feuille XLS classique en appelant du code applicatif pour chaque valeur de cellule

Syntaxe

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;

Remarques

La surcharge chaîne accepte une plage de style A1 telle que A1:C100. La surcharge numérique utilise des index de lignes et colonnes en base un. Les plages sont normalisées quand la ligne ou colonne de départ est supérieure à la ligne ou colonne de fin
Les cellules sont demandées dans l'ordre ligne par ligne. Définissez Value dans le callback pour écrire la cellule courante. Définissez Skip à True pour laisser la cellule courante inchangée. Définissez Cancel à True pour s'arrêter après le callback courant. La valeur renvoyée est le nombre de cellules écrites
Cette méthode écrit dans le modèle de feuille de calcul chargé. C'est une fonction d'aide d'écriture compacte à base de callbacks, pas un mode d'enregistrement en streaming de fichier

Exemple

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

Écrivains typés de lignes et de colonnes

TXLSWorksheet et TXLSXWorksheet acceptent également des tableaux ouverts numériques, de chaînes et de variants sans callback par cellule
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;
Les coordonnées sont en base un. Les valeurs continuent vers la droite pour les écrivains de lignes et vers le bas pour les écrivains de colonnes. Les écritures sont rognées à la limite de lignes ou de colonnes du format de fichier actif, des coordonnées de départ invalides renvoient zéro, et le résultat est le nombre de valeurs écrites. Les écrivains XLSX accroissent la capacité des collections géométriquement au fil des lots répétés
Revenue[0] := 1250.0;
Revenue[1] := 980.5;
Revenue[2] := 1425.25;
Written := Sheet.WriteFloatColumnValues(2, 4, Revenue);

Voir aussi