Dokumentacja HotXLS

TXLSXRange class

Jednostka: lxHandleX
Reprezentuje 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 Zwraca 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 przy osadzaniu wyjścia w istniejącej odpowiedzi UTF-8. Te same opcje są dostępne dla eksportu HTML zaznaczonego zakresu. Eksportowane wyjście zachowuje hiperłącza komórek jako <a> anchors and anchored images as inline data: identyfikatorów URI obrazów, gdy wypadają wewnątrz zaznaczonego prostokąta. Komentarze komórek wewnątrz zaznaczonego prostokąta są też emitowane jako escape'owane <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 Zapisuje tę samą wartość lub tekst formuły do każdej komórki zakresu poprzez kolekcję komórek arkusza
SetArrayFormula Ustawia na zakresie wielokomórkową formułę tablicową CSE. Lewa górna komórka przechowuje tekst formuły i kotwiczy zakres rozlania, a pozostałe komórki wskazują z powrotem na tę komórkę główną, dzięki czemu każda komórka wylicza własny element wyniku macierzowego. Przekaż tekst formuły bez otaczających klamer
ClearValues / Clear / ClearAll ClearValues and Clear remove values and formulas while preserving style indexes. ClearAll also clears style indexes
SetFontIndex / SetFillIndex / SetBorderIndex / SetNumberFormatIndex / SetAlignmentIndex Nakłada indeksy palety skoroszytu (liczone od 1) na każdą komórkę zakresu. Przekaż 0, aby wyczyścić odpowiedni indeks per komórka
SetNumberFormat Wyszukuje lub dopisuje ciąg formatu liczbowego w palecie skoroszytu, a następnie stosuje wynikowy indeks (liczony od 1) do zakresu. Pusty format czyści indeks per komórka
SetBorders Composes border edges over the range. TXLSXBorderEdgeKind accepts xlsxEdgeAll, xlsxEdgeOutline, xlsxEdgeInside, xlsxEdgeInsideHorizontal, xlsxEdgeInsideVertical, xlsxEdgeTop, xlsxEdgeBottom, xlsxEdgeLeft, xlsxEdgeRight, xlsxEdgeDiagonalUp, and xlsxEdgeDiagonalDown. Użyj selektorów krawędzi zewnętrznych i wewnętrznych, aby budować obramowania tabel bez nadpisywania niepowiązanych ustawień krawędzi
SetLocked / SetFormulaHidden Nakłada flagi ochrony komórek na każdą komórkę zakresu, wykorzystując ponownie pulę stylów ochrony skoroszytu
AutoFitColumns / AutoFitRows Przekazuje do pomocniczych metod auto-dopasowania arkusza w granicach kolumn lub wierszy zakresu. Opcjonalne limity szerokości i wysokości są przekazywane dalej, aby układy raportów mieściły się w zaprojektowanych granicach
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 Zwraca another worksheet-owned range shifted from the current bounds or resized to the requested row and column count
Sort Sortuje wiersze wewnątrz tego zakresu według jednej kolumny klucza lub wielu kolumn klucza w kolejności priorytetów. ADescending wybiera kolejność rosnącą lub malejącą dla każdego klucza; pominięte wpisy domyślnie sortują rosnąco. Wartości puste sortowane są na końcu
ApplyBuiltinStyle Nakłada widoczny wygląd wbudowanego stylu komórki Excela na każdą komórkę zakresu. Metoda pomocnicza zapisuje formatowanie bezpośrednie, dodając pasującą czcionkę i wypełnienie do pul skoroszytu oraz przypisując komórkom wynikowe indeksy
CopyTo / MoveTo Kopiuje lub przenosi cały zakres do docelowej komórki w lewym górnym rogu. Wartości, formuły, ładunki tekstu sformatowanego, indeksy stylów, komentarze, hiperłącza i kotwice rysunków są przekazywane przez pomocnicze metody kopiowania i przenoszenia zakresów arkusza
InsertRows / DeleteRows / InsertCols / DeleteCols Wykonuje wstawianie i usuwanie całych wierszy lub całych kolumn w granicach zakresu. Te metody pomocnicze przekazują wywołanie do operacji przesuwania wierszy/kolumn arkusza, dzięki czemu formuły, odwołania, filtry, zakresy ustawień strony, zakresy wykresów, nazwy, obrazy i kotwice wykresów pozostają zgodne z edytowaną siatką
ApplyFormatPatch Nakłada wybrane style formatowania z innego zakresu źródłowego na ten zakres, używając flag TXLSXFormatParts
CopyToClipboard Copies the range values and styles to the Windows clipboard
SaveAsPDF Eksportuje zakres komórek do pliku lub strumienia PDF przy użyciu silnika renderowania PDF działającego w procesie
SetDynamicArrayFormula Ustawia formułę tablicy dynamicznej na zakresie, z obsługą dynamicznego rozlewania (spill) znanego z Excela

Ownership and bounds

Zakresy należą do arkusza, który je utworzył, i są zwalniane razem z tym arkuszem. Kod aplikacji nie powinien wywoływać Free on a TXLSXRange i nie powinno trzymać odwołania do zakresu po zniszczeniu arkusza lub skoroszytu
Współrzędne liczbowe liczone są od 1. Tworzenie zakresu normalizuje zamienione narożniki i przycina granice do limitów arkusza XLSX

Przykład

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;

Zobacz również