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)