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)