HotXLS-Doku

TXLSXRange class

Einheit: lxHandleX
Stellt dar 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 Gibt zurück the range reference as A1 text. Single-cell ranges return a single cell reference such as 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 , wenn die Ausgabe in eine vorhandene UTF-8-Antwort eingebettet wird. Dieselben Optionen stehen für den HTML-Export des ausgewählten Bereichs zur Verfügung. Die exportierte Ausgabe bewahrt Zellhyperlinks als <a> anchors and anchored images as inline data: Bild-URIs, wenn sie innerhalb des ausgewählten Rechtecks liegen. Zellkommentare innerhalb des ausgewählten Rechtecks werden ebenfalls als escaped <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 Schreibt denselben Wert oder Formeltext über die Zellensammlung des Arbeitsblatts in jede Zelle des Bereichs
SetArrayFormula Setzt eine CSE-Array-Formel über mehrere Zellen des Bereichs. Die Zelle oben links speichert den Formeltext und verankert den Spill-Bereich, während die übrigen Zellen auf diese Wurzel zurückverweisen, sodass jede Zelle ihr eigenes Element des Matrixergebnisses auswertet. Formeltext ohne die umschließenden geschweiften Klammern übergeben
ClearValues / Clear / ClearAll ClearValues and Clear remove values and formulas while preserving style indexes. ClearAll also clears style indexes
SetFontIndex / SetFillIndex / SetBorderIndex / SetNumberFormatIndex / SetAlignmentIndex Wendet einsbasierte Indizes aus der Arbeitsmappen-Palette auf jede Zelle im Bereich an. Übergeben Sie 0, um den entsprechenden Zellindex zu löschen
SetNumberFormat Sucht einen Zahlenformat-String in der Arbeitsmappen-Palette oder hängt ihn an und wendet den resultierenden einsbasierten Index auf den Bereich an. Ein leeres Format löscht den Zellindex
SetBorders Composes border edges over the range. TXLSXBorderEdgeKind accepts xlsxEdgeAll, xlsxEdgeOutline, xlsxEdgeInside, xlsxEdgeInsideHorizontal, xlsxEdgeInsideVertical, xlsxEdgeTop, xlsxEdgeBottom, xlsxEdgeLeft, xlsxEdgeRight, xlsxEdgeDiagonalUp, and xlsxEdgeDiagonalDown. Verwenden Sie die Gliederungs- und Innenkanten-Selektoren, um Tabellenrahmen aufzubauen, ohne davon unabhängige Kanteneinstellungen zu ersetzen
SetLocked / SetFormulaHidden Wendet Zellschutz-Flags auf jede Zelle im Bereich an, indem der Schutz-Stil-Pool der Arbeitsmappe wiederverwendet wird
AutoFitColumns / AutoFitRows Leitet an die AutoFit-Helfer des Arbeitsblatts über die Spalten- oder Zeilengrenzen des Bereichs weiter. Optionale Breiten- und Höhenbegrenzungen werden durchgereicht, damit Berichtslayouts innerhalb der Entwurfsmaße bleiben
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 Gibt zurück another worksheet-owned range shifted from the current bounds or resized to the requested row and column count
Sort Sortiert die Zeilen in diesem Bereich nach einer Schlüsselspalte oder nach mehreren Schlüsselspalten in Prioritätsreihenfolge ADescending wählt pro Schlüssel aufsteigende oder absteigende Reihenfolge; ausgelassene Einträge sind standardmäßig aufsteigend. Leere Werte werden zuletzt einsortiert
ApplyBuiltinStyle Wendet das sichtbare Erscheinungsbild einer eingebauten Excel-Zellformatvorlage auf jede Zelle im Bereich an. Der Helfer schreibt die direkte Formatierung, indem er die passende Schriftart und Füllung zu den Arbeitsmappen-Pools hinzufügt und die resultierenden Indizes den Zellen zuweist
CopyTo / MoveTo Kopiert oder verschiebt den gesamten Bereich an eine Zielzelle oben links. Werte, Formeln, Rich-Text-Payloads, Stilindizes, Kommentare, Hyperlinks und Zeichenanker werden über die Bereichskopier- und Bereichsverschiebe-Helfer des Arbeitsblatts weitergeleitet
InsertRows / DeleteRows / InsertCols / DeleteCols Führt Einfügen und Löschen ganzer Zeilen oder Spalten über die Bereichsgrenzen aus. Diese Helfer leiten an die Zeilen-/Spaltenverschiebungen des Arbeitsblatts weiter, sodass Formeln, Referenzen, Filter, Seiteneinrichtungs-Bereiche, Diagrammbereiche, Namen, Bilder und Diagrammanker mit dem bearbeiteten Gitter übereinstimmen
ApplyFormatPatch Wendet selektiv Formatierungsstile aus einem anderen Quellbereich auf diesen Bereich an, und zwar über die TXLSXFormatParts-Flags
CopyToClipboard Copies the range values and styles to the Windows clipboard
SaveAsPDF Exportiert den Zellbereich als PDF-Datei oder -Stream unter Verwendung der In-Process-PDF-Rendering-Engine
SetDynamicArrayFormula Setzt eine dynamische Array-Formel über den Bereich und unterstützt damit das dynamische Spill-Verhalten von Excel

Ownership and bounds

Bereiche gehören dem Arbeitsblatt, das sie erstellt hat, und werden mit diesem freigegeben Anwendungscode sollte folgenden Aufruf unterlassen: Free on a TXLSXRange und sollte keine Bereichsreferenz behalten, nachdem das Arbeitsblatt oder die Arbeitsmappe zerstört wurde
Numerische Koordinaten sind einsbasiert. Die Bereichserstellung normalisiert vertauschte Ecken und begrenzt die Grenzen auf die Obergrenzen des XLSX-Arbeitsblatts

Beispiel

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;

Siehe auch