Docs HotXLS

TXLSTable / TXLSTables classes

Unité : lxHandle

Tableaux BIFF8 (.xls) (ListObjects d'Excel). Un tableau attache à une plage rectangulaire une région de références structurées nommée, avec un style intégré et un filtre automatique incorporé. La collection vit sur TXLSWorksheet.Tables; use AddTable as the most common entry point. The shape mirrors TXLSXTable / TXLSXTables côté XLSX, de sorte que le code qui ajoute des tableaux à un classeur puisse être indépendant du format. Disponible depuis la 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), la feuille émet un en-tête de fonctionnalité de tableau FEATHEADR11 ($0871), puis chaque tableau émet un FEAT11 ($0872) TableFeatureType payload plus un enregistrement de style LIST12 ($0877) juste avant l'EOF de la feuille, après la protection de feuille. Depuis la v2.87.4, l'enregistrement de style LIST12 utilise le MS-XLS List12TableStyleClientInfo layout, including the banded row / column flags and the style name as an XLUnicodeString HotXLS n'émet plus l'enregistrement hérité FEATHEADR ($0867) pour les métadonnées de tableaux. Les classeurs sans tableaux s'enregistrent exactement comme avant et ne portent aucune surcharge de flux d'enregistrements de tableaux. Les sauvegardes BIFF5 ne sont pas affectées car les tableaux sont un concept BIFF8+

From v2.33.2 the BIFF8 writer also suppresses the standalone sheet-level AUTOFILTERINFO / AUTOFILTER enregistrements quand un tableau sur la même feuille couvre entièrement la plage de filtre automatique, car Excel incorpore une liste déroulante de filtre automatique à l'intérieur de l'objet tableau lui-même. Dès la v2.87.4, le Feature11 définit aussi les indicateurs AutoFilter au niveau du tableau et du champ, et émet le vide par colonne Feat11FdaAutoFilter blocks Excel expects for table filter dropdowns

Exemple

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

Voir aussi

TXLSWorksheet.AddTable méthode
TXLSWorksheet.Tables propriété
TXLSXTable / TXLSXTables (XLSX side)