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)