Dokumentace HotXLS

TXLSXRange class

Jednotka: lxHandleX
Představuje obdélníkovou oblast listu XLSX vrácenou pomocí TXLSXWorksheet.Range, RCRange, UsedRange, EntireRow nebo EntireColumn. Oblast je nenáročný pohled na svůj list; nevlastní data buněk

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) Vytvoří novou oblast vlastněnou listem a normalizuje prohozené rohy tak, aby Row1/Col1 byly vždy souřadnice levého horního rohu
RefA1 Vrací odkaz na oblast jako text A1. Oblasti s jednou buňkou vrací odkaz na jednu buňku, například B2
SaveAsHTML Přetížení s volbami přijímají TXLSXHtmlExportOptions s Title, WriteDocument, IncludeStyles, IncludeBOM a TableClass. Nastavte WriteDocument na False pro fragment tabulky; IncludeBOM nastavte na False při vkládání výstupu do existující odpovědi UTF-8. Tytéž volby jsou k dispozici i pro export HTML vybraného rozsahu. Exportovaný výstup zachovává hypertextové odkazy buněk jako <a> a ukotvené obrázky jako vložené data: URI obrázků, pokud spadají do vybraného obdélníku. Komentáře buněk uvnitř vybraného obdélníku se navíc vypisují jako escapované atributy <td> title. Pokud je IncludeStyles zapnuto, explicitní hodnoty ColWidth se vypisují jako šířky <col> a explicitní hodnoty RowHeight jako styly výšky <tr>. Běhy buněk s formátovaným textem (rich text) se vypisují jako escapované elementy <span> s vloženými styly písma, barvy, zvýraznění a podtržení, opět pokud je IncludeStyles zapnuto. Ohraničení buněk se při zapnutém IncludeStyles vypisují jako CSS pravidla border-left, border-right, border-top a border-bottom. Skryté řádky a sloupce označené pomocí RowHidden / ColHidden, stejně jako sloupce s explicitní nulovou šířkou, se ve vygenerované tabulce a v <colgroup> vynechávají. Nastavení svislého zarovnání se při zapnutém IncludeStyles vypisují jako CSS pravidla vertical-align
SetValue / SetFormula Zapíše tutéž hodnotu nebo text vzorce do každé buňky v rozsahu přes kolekci buněk pracovního listu
SetArrayFormula Nastaví přes rozsah maticový vzorec CSE pro více buněk. Buňka v levém horním rohu uchovává text vzorce a ukotvuje rozlévaný rozsah (spill), zbývající buňky se odkazují zpět na tento kořen, takže každá buňka vyhodnotí svůj prvek maticového výsledku. Zadejte text vzorce bez okolních složených závorek
ClearValues / Clear / ClearAll ClearValues and Clear remove values and formulas while preserving style indexes. ClearAll also clears style indexes
SetFontIndex / SetFillIndex / SetBorderIndex / SetNumberFormatIndex / SetAlignmentIndex Aplikuje indexy palety sešitu (číslované od 1) na každou buňku v rozsahu. Hodnota 0 smaže odpovídající index u dané buňky
SetNumberFormat Vyhledá nebo přidá formátovací řetězec číselného formátu v paletě sešitu a výsledný index (číslovaný od 1) aplikuje na rozsah. Prázdný formát smaže index u dané buňky
SetBorders Composes border edges over the range. TXLSXBorderEdgeKind accepts xlsxEdgeAll, xlsxEdgeOutline, xlsxEdgeInside, xlsxEdgeInsideHorizontal, xlsxEdgeInsideVertical, xlsxEdgeTop, xlsxEdgeBottom, xlsxEdgeLeft, xlsxEdgeRight, xlsxEdgeDiagonalUp, and xlsxEdgeDiagonalDown. Voliče vnějšího okraje a vnitřních hran umožňují sestavit ohraničení tabulky, aniž byste přepsali nesouvisející nastavení hran
SetLocked / SetFormulaHidden Aplikuje příznaky ochrany buněk na každou buňku v rozsahu, a to znovupoužitím poolu ochranných stylů sešitu
AutoFitColumns / AutoFitRows Přeposílá na pomocné funkce listu pro auto-přizpůsobení (auto-fit) přes meze sloupců nebo řádků rozsahu. Volitelné limity šířky a výšky se předávají dál, aby rozvrhy reportů zůstaly v navržených mezích
Merge / Unmerge Merge a Merge(False) vytvoří jeden sloučený obdélník. Merge(True) vytvoří jeden sloučený rozsah na řádek, což odpovídá chování Excelu při slučování přes řádky (merge-across). Unmerge odstraní přesnou shodu sloučeného rozsahu
Offset / Resize Vrací jinou oblast vlastněnou listem, posunutou oproti současným mezím nebo převelikostněnou na požadovaný počet řádků a sloupců
Sort Seřadí řádky uvnitř tohoto rozsahu podle jednoho klíčového sloupce nebo podle více klíčových sloupců v pořadí priorit ADescending volí u každého klíče vzestupné nebo sestupné pořadí; vynechané položky se ve výchozím stavu řadí vzestupně. Prázdné hodnoty se řadí na konec
ApplyBuiltinStyle Aplikuje viditelný vzhled vestavěného stylu buněk Excelu na každou buňku v rozsahu. Pomocná funkce zapíše přímé formátování tak, že do palet sešitu přidá odpovídající písmo a výplň a výsledné indexy přiřadí buňkám
CopyTo / MoveTo Zkopíruje nebo přesune celý rozsah do cílové buňky v levém horním rohu. Hodnoty, vzorce, payloady formátovaného textu, indexy stylů, komentáře, hypertextové odkazy a ukotvení kreseb se přeposílají přes pomocné funkce listu pro kopírování a přesun rozsahů
InsertRows / DeleteRows / InsertCols / DeleteCols Provede vkládání a mazání celých řádků nebo celých sloupců v mezích rozsahu. Tyto pomocné funkce se přeposílají na posunové operace listu pro řádky a sloupce, takže vzorce, odkazy, filtry, rozsahy nastavení stránky, rozsahy grafů, názvy, obrázky i ukotvení grafů zůstávají v souladu s upravovanou mřížkou
ApplyFormatPatch Aplikuje na tento rozsah vybrané styly formátování z jiného zdrojového rozsahu pomocí příznaků TXLSXFormatParts
CopyToClipboard Copies the range values and styles to the Windows clipboard
SaveAsPDF Exportuje rozsah buněk do souboru nebo streamu PDF pomocí in-process vykreslovacího jádra PDF
SetDynamicArrayFormula Nastaví přes rozsah dynamický maticový vzorec (dynamic array formula), včetně podpory Excelova dynamického rozlévání (spill)

Ownership and bounds

Rozsahy vlastní pracovní list, který je vytvořil, a uvolňují se spolu s ním Aplikační kód by neměl volat Free on a TXLSXRange a neměl by si po zničení pracovního listu nebo sešitu uchovávat odkaz na rozsah
Číselné souřadnice jsou indexovány od 1. Vytvoření rozsahu normalizuje prohozené rohy a meze sváže na limity pracovního listu XLSX

Příklad

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;

Viz také