TXLSTable / TXLSTables-Klassen
Unit: lxHandle
BIFF8-.xls-Tabellen (Excel ListObjects). Eine Tabelle bindet einen benannten Bereich mit strukturierten Verweisen, einem eingebauten Stil und einem eingebetteten Autofilter an einen rechteckigen Bereich. Die Sammlung liegt auf TXLSWorksheet.Tables; verwende AddTable als gängigsten Einstiegspunkt. Die Form entspricht TXLSXTable / TXLSXTables auf der XLSX-Seite, sodass Code, der Tabellen zu einer Arbeitsmappe hinzufügt, vom Format abstrahiert bleiben kann. Verfügbar seit v2.33.0
Deklaration
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;
Tabellenblatt-Abkürzung
TXLSWorksheet bietet AddTable(AName, ARange, AColumns), das an Tables.Add weiterleitet und das neue Tabellenobjekt zurückgibt, damit du vor dem Speichern StyleName oder die Option für gebänderte Zeilen verfeinern kannst
Verhalten beim Speichern
Bei BIFF8 SaveAs(xlExcel97) schreibt das Blatt zuerst einen Table-Feature-Header FEATHEADR11 ($0871), danach schreibt jede Tabelle kurz vor dem Worksheet-EOF und nach dem Blattschutz einen FEAT11 ($0872)-TableFeatureType-Payload sowie einen LIST12 ($0877)-Stil-Datensatz. Seit v2.87.4 verwendet der LIST12-Stildatensatz das MS-XLS-Layout List12TableStyleClientInfo, einschließlich der Flags für gebänderte Zeilen/Spalten und des Stilnamens als XLUnicodeString. HotXLS schreibt den alten FEATHEADR ($0867)-Datensatz für Tabellenmetadaten nicht mehr. Arbeitsmappen ohne Tabellen speichern exakt wie zuvor und tragen keinen Tabellen-Record-Stream-Overhead. BIFF5-Speicherungen bleiben unverändert, weil Tabellen ein BIFF8+-Konzept sind
Seit v2.33.2 unterdrückt der BIFF8-Writer außerdem die eigenständigen blattebene AUTOFILTERINFO- / AUTOFILTER-Datensätze, wenn eine Tabelle auf demselben Blatt den Autofilter-Bereich vollständig abdeckt, weil Excel einen Autofilter-Dropdown direkt im Tabellenobjekt einbettet. Seit v2.87.4 setzt die eigene Feature11-Metadaten der Tabelle außerdem die AutoFilter-Flags auf Tabellen- und Feldebene und schreibt die leeren per-Spalte-Feat11FdaAutoFilter-Blöcke aus, die Excel für Tabellenfilter-Dropdowns erwartet
Beispiel
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);
Siehe auch
TXLSWorksheet.AddTable Methode
TXLSWorksheet.Tables Eigenschaft
TXLSXTable / TXLSXTables (XLSX side)