Documentación de HotXLS

TXLSTable

Unidad: lxHandle

Tablas BIFF8 (.xls) (ListObjects de Excel). Una tabla asocia a un rango rectangular una región con nombre de referencia estructurada, un estilo integrado y un autofiltro incrustado. La colección vive en TXLSWorksheet.Tables; usa AddTable como punto de entrada más habitual. La forma refleja TXLSXTable / TXLSXTables en la parte XLSX, de modo que el código que añade tablas a un libro puede ser agnóstico al formato. Disponible desde v2.33.0

Declaración

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;

Acceso directo en hoja de trabajo

TXLSWorksheet expone AddTable(AName, ARange, AColumns) que reenvía a Tables.Add y devuelve el nuevo objeto de tabla para que puedas afinar su StyleName o las banded-row flags antes de guardar

Comportamiento en el guardado

En BIFF8 SaveAs(xlExcel97), la hoja emite un encabezado de característica de tabla FEATHEADR11 ($0871), luego cada tabla emite una carga útil FEAT11 ($0872) TableFeatureType más un registro de estilo LIST12 ($0877) justo antes del EOF de la hoja, después de la protección de la hoja. Desde v2.87.4 el registro de estilo LIST12 usa el diseño MS-XLS List12TableStyleClientInfo, incluidas las banderas de filas y columnas alternas y el nombre del estilo como XLUnicodeString HotXLS ya no emite el registro FEATHEADR heredado ($0867) para los metadatos de tabla. Los libros sin tablas se guardan exactamente igual que antes y no llevan sobrecarga de flujo de registros de tabla. Los guardados BIFF5 no se ven afectados porque Tables es un concepto BIFF8+

Desde v2.33.2 el escritor BIFF8 también suprime los registros independientes AUTOFILTERINFO / AUTOFILTER a nivel de hoja cuando una Table en la misma hoja cubre por completo el rango de autofiltro, porque Excel incrusta un desplegable de autofiltro dentro del propio objeto Table. Desde v2.87.4 los metadatos Feature11 de la propia tabla también establecen las banderas AutoFilter a nivel de tabla y de campo y emiten los bloques vacíos Feat11FdaAutoFilter por columna que Excel espera para los desplegables de filtro de tabla

Ejemplo

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

Véase también

método TXLSWorksheet.AddTable
propiedad TXLSWorksheet.Tables
TXLSXTable / TXLSXTables (XLSX side)