HotXLS-documentatie

TXLSTable / TXLSTables classes

Eenheid: lxHandle

BIFF8 (.xls) Tables (Excel ListObjects). A table attaches a named structured-reference region with a built-in style en an embedded autofilter to a rectangular range. The collection lives on TXLSWorksheet.Tables; use AddTable as the most common entry point. The shape mirrors TXLSXTable / TXLSXTables aan de XLSX-kant, zodat code die tabellen aan een werkmap toevoegt formaatonafhankelijk kan zijn. Beschikbaar sinds v2.33.0

Declaration

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;

Worksheet shortcut

TXLSWorksheet exposes AddTable(AName, ARange, AColumns) which forwards to Tables.Add and returns the new table object so you can refine its StyleName or banded-row flags before save

Save-time behavior

On BIFF8 SaveAs(xlExcel97), schrijft het werkblad één FEATHEADR11 ($0871) table-feature-header, waarna elke tabel een FEAT11 ($0872) TableFeatureType payload plus een LIST12 -stijlrecord ($0877) vlak vóór de werkblad-EOF, na de werkbladbeveiliging. Sinds v2.87.4 gebruikt het LIST12-stijlrecord de MS-XLS List12TableStyleClientInfo layout, including the banded row / column flags and the style name as an XLUnicodeString HotXLS no longer emits the legacy FEATHEADR ($0867) record for table metadata. Workbooks without tables save exactly as before en carry no table record-stream overhead. BIFF5 saves are unaffected because Tables are a BIFF8+ concept

Vanaf v2.33.2 onderdrukt de BIFF8-schrijver ook de standalone sheet-level AUTOFILTERINFO / AUTOFILTER records wanneer een tabel op hetzelfde blad het autofilterbereik volledig afdekt, omdat Excel een autofilter-dropdown in het tabelobject zelf inbedt. Vanaf v2.87.4 gebruikt de eigen Feature11 metadata also sets the table-level en field-level AutoFilter flags en emits the empty per-column Feat11FdaAutoFilter blocks Excel expects for table filter dropdowns

Voorbeeld

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);

Zie ook

TXLSWorksheet.AddTable method
TXLSWorksheet.Tables eigenschap
TXLSXTable / TXLSXTables (XLSX side)