Classe TXLSTable
Unidade: lxHandle
Tables do BIFF8 (.xls) (ListObjects do Excel). Uma tabela anexa a um intervalo retangular um nome estruturado, um estilo interno e um autofiltro embutido. A coleção fica em TXLSWorksheet.Tables; use AddTable como o ponto de entrada mais comum. A forma espelha TXLSXTable / TXLSXTables no lado XLSX, então o código que adiciona tabelas a uma pasta de trabalho pode ser agnóstico ao formato. Disponível desde v2.33.0
Declaração
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;
Atalho da planilha
TXLSWorksheet expõe AddTable(AName, ARange, AColumns) que encaminha para Tables.Add e retorna o novo objeto de tabela para que você possa ajustar o StyleName ou as flags de linhas em faixa antes de salvar
Comportamento no momento de salvar
Em SaveAs(xlExcel97) de BIFF8, a planilha emite um cabeçalho de recurso de tabela FEATHEADR11 ($0871), depois cada tabela emite um payload FEAT11 ($0872) TableFeatureType mais um registro de estilo LIST12 ($0877) imediatamente antes do EOF da planilha, após a proteção da planilha. Desde v2.87.4 o registro de estilo LIST12 usa o layout MS-XLS List12TableStyleClientInfo, incluindo as flags de linha / coluna em faixa e o nome do estilo como um XLUnicodeString. O HotXLS não emite mais o registro legado FEATHEADR ($0867) para metadados de tabela. Pastas de trabalho sem tabelas são salvas exatamente como antes e não carregam sobrecarga de fluxo de registros de tabela. Salvamentos BIFF5 não são afetados porque Tables é um conceito BIFF8+
Desde v2.33.2 o gravador BIFF8 também suprime os registros independentes AUTOFILTERINFO / AUTOFILTER no nível da planilha quando uma Table na mesma planilha cobre totalmente o intervalo de autofiltro, porque o Excel embute um dropdown de autofiltro dentro do próprio objeto Table. Desde v2.87.4 os metadados Feature11 da própria tabela também definem as flags de AutoFilter no nível da tabela e do campo e emitem os blocos vazios Feat11FdaAutoFilter por coluna que o Excel espera para os dropdowns de filtro da tabela
Exemplo
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);
Veja também
método TXLSWorksheet.AddTable
propriedade TXLSWorksheet.Tables
TXLSXTable / TXLSXTables (XLSX side)