Docs HotXLS

TXLSXRange class

Unité : lxHandleX
Représente a rectangular XLSX worksheet range returned by TXLSXWorksheet.Range, RCRange, UsedRange, EntireRow, or EntireColumn. A range is a lightweight view over its worksheet; it does not own cell data

Declaration

TXLSXBuiltinCellStyle = (
  xbsNormal, xbsGood, xbsBad, xbsNeutral,
  xbsCalculation, xbsCheckCell, xbsExplanatoryText, xbsInput,
  xbsLinkedCell, xbsNote, xbsOutput, xbsWarningText,
  xbsHeading1, xbsHeading2, xbsHeading3, xbsHeading4, xbsTitle, xbsTotal,
  xbsAccent1, xbsAccent2, xbsAccent3, xbsAccent4, xbsAccent5, xbsAccent6);

TXLSXRange = class
  constructor Create(ASheet: TXLSXWorksheet; ARow1, ACol1, ARow2, ACol2: Integer);
  function RefA1: WideString;
  function SaveAsHTML(const FileName: WideString): Integer; overload;
  function SaveAsHTML(const FileName: WideString; Options: TXLSXHtmlExportOptions): Integer; overload;
  function SaveAsHTML(Stream: TStream): Integer; overload;
  function SaveAsHTML(Stream: TStream; Options: TXLSXHtmlExportOptions): Integer; overload;

  property Sheet: TXLSXWorksheet;
  property Row1, Col1, Row2, Col2: Integer;
  property RowCount, ColCount: Integer;

  procedure SetValue(const V: Variant);
  procedure SetFormula(const F: WideString);
  function SetArrayFormula(const F: WideString): Integer;
  procedure ClearValues;
  procedure Clear;
  procedure ClearAll;

  procedure SetFontIndex(AIdx: Integer);
  procedure SetFillIndex(AIdx: Integer);
  procedure SetBorderIndex(AIdx: Integer);
  procedure SetNumberFormatIndex(AIdx: Integer);
  procedure SetAlignmentIndex(AIdx: Integer);
  procedure SetNumberFormat(const Fmt: WideString);
  procedure SetBorders(Kind: TXLSXBorderEdgeKind; Style: TXLSXBorderStyle); overload;
  procedure SetBorders(Kind: TXLSXBorderEdgeKind; Style: TXLSXBorderStyle; Color: LongWord); overload;
  procedure SetLocked(ALocked: Boolean);
  procedure SetFormulaHidden(AHidden: Boolean);

  procedure AutoFitColumns(AMinWidth: Double = 0; AMaxWidth: Double = 0);
  procedure AutoFitRows(AMinHeight: Double = 0; AMaxHeight: Double = 0);
  procedure Merge; overload;
  procedure Merge(Across: OleVariant); overload;
  procedure Unmerge;
  function Offset(DRow, DCol: Integer): TXLSXRange;
  function Resize(NewRowCount, NewColCount: Integer): TXLSXRange;
  procedure Sort(AKeyColumn: Integer; ADescending: Boolean = False); overload;
  procedure Sort(const AKeyColumns: array of Integer; const ADescending: array of Boolean); overload;
  procedure ApplyBuiltinStyle(AStyle: TXLSXBuiltinCellStyle);
  procedure CopyTo(ADestRow, ADestCol: Integer);
  procedure MoveTo(ADestRow, ADestCol: Integer);
  procedure InsertRows;
  procedure DeleteRows;
  procedure InsertCols;
  procedure DeleteCols;
  procedure ApplyFormatPatch(ASource: TXLSXRange; AParts: TXLSXFormatParts);
  function CopyToClipboard: Boolean;
  function SaveAsPDF(const FileName: WideString): Integer; overload;
  function SaveAsPDF(Stream: TStream): Integer; overload;
  function SetDynamicArrayFormula(const F: WideString): Integer;
end;

Members

Member Description
Create(ASheet, ARow1, ACol1, ARow2, ACol2) Builds a new worksheet-owned range and normalizes reversed corners so Row1/Col1 are always the upper-left coordinate
RefA1 Renvoie la référence de la plage sous forme de texte A1. Les plages d'une seule cellule renvoient une référence de cellule unique comme B2
SaveAsHTML Options overloads accept TXLSXHtmlExportOptions for Title, WriteDocument, IncludeStyles, IncludeBOM, and TableClass. Set WriteDocument to False for a table fragment; set IncludeBOM to False quand la sortie est incorporée dans une réponse UTF-8 existante. Les mêmes options sont disponibles pour l'export HTML de la plage sélectionnée. La sortie exportée préserve les liens hypertexte des cellules comme <a> anchors and anchored images as inline data: les URI d'image quand elles tombent dans le rectangle sélectionné. Les commentaires de cellules situés dans le rectangle sélectionné sont également émis comme <td> title attributes. When IncludeStyles is enabled, explicit ColWidth values are emitted as <col> widths and explicit RowHeight values as <tr> height styles. Rich-text cell runs are emitted as escaped <span> elements with inline font, color, emphasis, and underline styles when IncludeStyles is enabled. Cell borders are emitted as CSS border-left, border-right, border-top, and border-bottom rules when IncludeStyles is enabled. Hidden rows and columns marked by RowHidden / ColHidden, plus explicit zero-width columns, are skipped in the generated table and <colgroup>. Vertical alignment settings are emitted as CSS vertical-align rules when IncludeStyles is enabled
SetValue / SetFormula Écrit la même valeur ou le même texte de formule dans chaque cellule de la plage via la collection de cellules de la feuille
SetArrayFormula Définit une formule matricielle CSE multi-cellules sur la plage. La cellule en haut à gauche stocke le texte de la formule et ancre la plage de propagation, tandis que les autres cellules renvoient à cette racine, si bien que chaque cellule évalue son propre élément du résultat matriciel. Passez le texte de la formule sans les accolades
ClearValues / Clear / ClearAll ClearValues and Clear remove values and formulas while preserving style indexes. ClearAll also clears style indexes
SetFontIndex / SetFillIndex / SetBorderIndex / SetNumberFormatIndex / SetAlignmentIndex Applique des index de palette de classeur basés sur 1 à chaque cellule de la plage. Passez 0 pour effacer l'index par cellule correspondant
SetNumberFormat Recherche ou ajoute une chaîne de format de nombre dans la palette du classeur, puis applique à la plage l'index basé sur 1 qui en résulte. Un format vide efface l'index par cellule
SetBorders Composes border edges over the range. TXLSXBorderEdgeKind accepts xlsxEdgeAll, xlsxEdgeOutline, xlsxEdgeInside, xlsxEdgeInsideHorizontal, xlsxEdgeInsideVertical, xlsxEdgeTop, xlsxEdgeBottom, xlsxEdgeLeft, xlsxEdgeRight, xlsxEdgeDiagonalUp, and xlsxEdgeDiagonalDown. Utilisez les sélecteurs de bords externes et internes pour construire des bordures de tableau sans remplacer des réglages de bords sans rapport
SetLocked / SetFormulaHidden Applique les indicateurs de protection de cellules à chaque cellule de la plage en réutilisant le pool de styles de protection du classeur
AutoFitColumns / AutoFitRows Délègue aux assistants d'ajustement automatique de la feuille sur les limites de colonnes ou de lignes de la plage. Les limites de largeur et hauteur facultatives sont transmises pour garder les mises en page de rapport dans les bornes de conception
Merge / Unmerge Merge and Merge(False) create one merged rectangle. Merge(True) creates one merged range per row, matching Excel's merge-across behavior. Unmerge removes an exact merged-range match
Offset / Resize Renvoie une autre plage détenue par la feuille, décalée par rapport aux limites courantes ou redimensionnée aux nombres de lignes et colonnes demandés
Sort Trie les lignes à l'intérieur de cette plage par une colonne clé ou par plusieurs colonnes clés par ordre de priorité ADescending sélectionne l'ordre croissant ou décroissant par clé ; les entrées omises prennent l'ordre croissant par défaut. Les valeurs vides sont triées en dernier
ApplyBuiltinStyle Applique l'apparence visible d'un style de cellule intégré Excel à chaque cellule de la plage. L'assistant écrit une mise en forme directe en ajoutant la police et le remplissage correspondants aux pools du classeur et en assignant aux cellules les index qui en résultent
CopyTo / MoveTo Copie ou déplace la plage entière vers une cellule en haut à gauche de destination. Valeurs, formules, payloads de texte enrichi, index de style, commentaires, liens hypertexte et ancres de dessin sont acheminés via les assistants de copie et de déplacement de plage de la feuille
InsertRows / DeleteRows / InsertCols / DeleteCols Effectue l'insertion et la suppression de lignes ou de colonnes entières sur les limites de la plage. Ces assistants délèguent aux opérations de décalage de lignes/colonnes de la feuille, de sorte que formules, références, filtres, plages de mise en page, plages de graphiques, noms, images et ancres de graphiques restent alignés avec la grille modifiée
ApplyFormatPatch Applique des styles de mise en forme sélectifs d'une autre plage source vers cette plage à l'aide des indicateurs TXLSXFormatParts
CopyToClipboard Copies the range values and styles to the Windows clipboard
SaveAsPDF Exporte la plage de cellules vers un fichier ou flux PDF à l'aide du moteur de rendu PDF in-process
SetDynamicArrayFormula Définit une formule de tableau dynamique sur la plage, avec prise en charge du comportement de propagation dynamique d'Excel

Ownership and bounds

Les plages appartiennent à la feuille qui les a créées et sont libérées avec cette feuille. Le code applicatif ne doit pas appeler Free on a TXLSXRange et ne doit pas conserver de référence de plage après la destruction de la feuille ou du classeur
Les coordonnées numériques sont basées sur 1. La création de plage normalise les coins inversés et borne les limites aux limites des feuilles XLSX

Exemple

var
  Wb: TXLSXWorkbook;
  Ws: TXLSXWorksheet;
  Body: TXLSXRange;
begin
  Wb := TXLSXWorkbook.Create;
  try
    Ws := Wb.Sheets.Add('Report');
    Body := Ws.Range['B2:D20'];
    Body.SetNumberFormat('#,##0.00');
    Body.SetBorders(xlsxEdgeOutline, xlsxBorderThin, $FF808080);
    Body.Sort(2);
    Body.ApplyBuiltinStyle(xbsAccent1);
    Ws.Range['F2:G3'].SetArrayFormula('MMULT(A2:B3,D2:E3)');
    Body.AutoFitColumns;
    Body.SaveAsHTML('report-fragment.html');
  finally
    Wb.Free;
  end;
end;

Voir aussi