Dokumentace HotXLS

TXLSTable

Jednotka: lxHandle

BIFF8 (.xls) Tabulky (Excel ListObjects). Tabulka připojí k obdélníkovému rozsahu pojmenovanou oblast se strukturovanými odkazy, vestavěným stylem a vloženým autofiltrem. Kolekce žije na TXLSWorksheet.Tables; nejběžnějším vstupním bodem je AddTable. Tvar odpovídá TXLSXTable / TXLSXTables na straně XLSX, takže kód, který přidává tabulky do sešitu, může být nezávislý na formátu. K dispozici od v2.33.0

Deklarace

type
  TXLSTable = class
    constructor Create;
    procedure Assign(Source: TXLSTable);
    property Id: Integer;                  // assigned by SaveAs (1..N per sheet)
    property Name: WideString;
    property DisplayName: WideString;
    property Range: WideString;             // e.g. "A1:F9"
    property Columns: TStringList;          // header text per column
    property StyleName: WideString;         // default 'TableStyleMedium2'
    property ShowFirstColumn: Boolean;      // default False
    property ShowLastColumn: Boolean;       // default False
    property ShowRowStripes: Boolean;       // default True
    property ShowColumnStripes: Boolean;    // default False
    property TotalsRowShown: Boolean;       // default False
  end;

  TXLSTables = class
    function Add: TXLSTable; overload;
    function Add(const AName, ARange: WideString;
      AColumns: TStrings): Integer; overload;
    procedure Delete(Index: Integer);
    procedure Clear;
    property Count: Integer;
    property Items[Index: Integer]: TXLSTable; default;
  end;

Zkratka listu

TXLSWorksheet zpřístupňuje AddTable(AName, ARange, AColumns), které předá řízení do Tables.Add a vrátí nový objekt tabulky, takže si před uložením můžete upravit jeho StyleName nebo příznaky pruhovaných řádků

Chování při ukládání

U SaveAs(xlExcel97) v BIFF8 list nejprve vypíše hlavičku funkce tabulky FEATHEADR11 ($0871), potom každá tabulka vypíše datový payload TableFeatureType FEAT11 ($0872) a stylový záznam LIST12 ($0877) těsně před EOF listu, po ochraně listu. Od v2.87.4 používá stylový záznam LIST12 rozložení List12TableStyleClientInfo podle MS-XLS, včetně příznaků pruhovaných řádků / sloupců a názvu stylu jako XLUnicodeString HotXLS už pro metadata tabulek nevypisuje starý záznam FEATHEADR ($0867). Sešity bez tabulek se ukládají stejně jako dřív a nenesou žádnou režii streamu záznamů tabulky. Ukládání BIFF5 není dotčeno, protože tabulky jsou koncept BIFF8+

Od v2.33.2 zapisovač BIFF8 také potlačí samostatné záznamy AUTOFILTERINFO / AUTOFILTER na úrovni listu, když Tabulka na stejném listu plně pokrývá rozsah autofiltru, protože Excel vkládá rozbalovací nabídku autofiltru přímo do objektu Tabulky. Od v2.87.4 metadata vlastní tabulky Feature11 navíc nastavují příznaky AutoFilter na úrovni tabulky i pole a vypisují prázdné bloky Feat11FdaAutoFilter pro každý sloupec, které Excel očekává pro rozbalovací nabídky filtrování tabulky

Příklad

var
  cols: TStringList;
begin
  Sheet.Cells.Item[1, 1].Value := 'Region';
  Sheet.Cells.Item[1, 2].Value := 'Product';
  Sheet.Cells.Item[1, 3].Value := 'Quarter';
  Sheet.Cells.Item[1, 4].Value := 'Revenue';
  // ... nine data rows below ...

  cols := TStringList.Create;
  try
    cols.Add('Region');
    cols.Add('Product');
    cols.Add('Quarter');
    cols.Add('Revenue');
    with Sheet.AddTable('SalesTable', 'A1:D10', cols) do
    begin
      StyleName       := 'TableStyleMedium2';
      ShowRowStripes  := True;
    end;
  finally
    cols.Free;
  end;

  Workbook.SaveAs('SalesTable.xls', xlExcel97);

Viz také

TXLSWorksheet.AddTable metoda
TXLSWorksheet.Tables vlastnost
TXLSXTable / TXLSXTables (XLSX side)