Documentación de HotXLS

TXLSTable

Unidad: lxHandle

Tablas BIFF8 (.xls) (ListObjects de Excel). Una tabla adjunta un rango con referencia estructurada con nombre, un estilo integrado y un autofiltro incrustado a un rango rectangular. La colección vive en TXLSWorksheet.Tables; usa AddTable como el punto de entrada más común. La forma refleja TXLSXTable / TXLSXTables en el lado XLSX, así que el código que agrega 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 desde la hoja de cálculo

TXLSWorksheet expone AddTable(AName, ARange, AColumns) que reenvía a Tables.Add y devuelve el nuevo objeto de tabla para que puedas ajustar su StyleName o sus banderas de filas alternadas antes de guardar

Comportamiento al guardar

En BIFF8 SaveAs(xlExcel97), la hoja emite un encabezado de característica de tabla FEATHEADR11 ($0871), luego cada tabla emite una carga útil TableFeatureType FEAT11 ($0872) 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 alternadas y el nombre del estilo como un XLUnicodeString HotXLS ya no emite el registro heredado FEATHEADR ($0867) para los metadatos de tabla. Los libros sin tablas se guardan exactamente igual que antes y no cargan sobrecosto de flujo de registros de tabla. Los guardados BIFF5 no cambian 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 del autofiltro, porque Excel incrusta un menú desplegable de autofiltro dentro del propio objeto Table. Desde v2.87.4, los metadatos Feature11 de la 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 menús desplegables del filtro de tablas

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)