TXLSTable / TXLSTables 클래스
유닛: lxHandle
BIFF8(.xls) Tables(Excel ListObjects). 표는 직사각형 범위에 이름이 있는 구조화된 참조 영역과 내장 스타일, 포함된 자동 필터를 연결합니다. 컬렉션은 TXLSWorksheet.Tables에 있으며, 가장 흔한 진입점은 AddTable입니다. 이 구조는 XLSX 쪽의 TXLSXTable / TXLSXTables와 대응하므로 통합 문서에 표를 추가하는 코드는 형식에 구애받지 않습니다. v2.33.0부터 제공
선언
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;
워크시트 단축키
TXLSWorksheet는 AddTable(AName, ARange, AColumns)을 제공하며, 이를 Tables.Add로 전달하고 새 표 개체를 반환하므로 저장 전에 StyleName이나 밴드 행 플래그를 조정할 수 있습니다
저장 시 동작
BIFF8 SaveAs(xlExcel97)에서는 시트가 먼저 FEATHEADR11 ($0871) 표 기능 헤더 하나를 내보내고, 각 표는 시트 EOF 앞에서 시트 보호 이후에 FEAT11 ($0872) TableFeatureType 페이로드와 LIST12 ($0877) 스타일 레코드를 내보냅니다. v2.87.4부터 LIST12 스타일 레코드는 밴드 행 / 열 플래그와 스타일 이름을 XLUnicodeString으로 포함하는 MS-XLS List12TableStyleClientInfo 레이아웃을 사용합니다. HotXLS는 더 이상 표 메타데이터에 레거시 FEATHEADR ($0867) 레코드를 내보내지 않습니다. 표가 없는 통합 문서는 이전과 정확히 같이 저장되며 표 레코드 스트림 오버헤드도 없습니다. Tables는 BIFF8+ 개념이므로 BIFF5 저장은 영향을 받지 않습니다
v2.33.2부터 BIFF8 writer는 같은 시트의 Table이 자동 필터 범위를 완전히 덮을 때 독립적인 시트 수준 AUTOFILTERINFO / AUTOFILTER 레코드도 함께 생략합니다. Excel이 Table 개체 자체 안에 자동 필터 드롭다운을 포함하기 때문입니다. v2.87.4부터는 Table 자체의 Feature11 메타데이터도 표 수준 및 필드 수준 AutoFilter 플래그를 설정하고, Table 필터 드롭다운에 Excel이 기대하는 빈 열별 Feat11FdaAutoFilter 블록을 내보냅니다
예제
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);
참조
TXLSWorksheet.AddTable 메서드
TXLSWorksheet.Tables 속성
TXLSXTable / TXLSXTables (XLSX side)