HotXLS 文件

TXLSTable

單元: lxHandle

BIFF8(.xls)表格(Excel ListObjects)。表格會把具名結構化參考區域、內建樣式與內嵌自動篩選套用到一個矩形範圍。集合位於 TXLSWorksheet.Tables;最常見的入口點是 AddTable。其形狀與 XLSX 端的 TXLSXTable / TXLSXTables 相呼應,因此為活頁簿新增表格的程式可以不必在意格式。自 v2.33.0 起可用

Declaration

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;

工作表 shortcut

TXLSWorksheet 提供 AddTable(AName, ARange, AColumns),它會轉送到 Tables.Add 並回傳新的表格物件,讓你可以在儲存前微調其 StyleName 或帶狀列旗標

儲存時的行為

在 BIFF8 SaveAs(xlExcel97) 中,工作表會先輸出一個 FEATHEADR11 ($0871) 表格功能標頭,接著每個表格都會在工作表 EOF 之前、保護之後,輸出一個 FEAT11 ($0872) TableFeatureType 負載與一個 LIST12 ($0877) 樣式記錄。自 v2.87.4 起,LIST12 樣式記錄使用 MS-XLS List12TableStyleClientInfo 版面,包括帶狀列/欄旗標與以 XLUnicodeString 表示的樣式名稱。HotXLS 不再為表格中繼資料輸出舊式 FEATHEADR ($0867) 記錄。沒有表格的活頁簿會照原樣儲存,且不會增加表格記錄串流的額外負擔。BIFF5 儲存不受影響,因為 Tables 是 BIFF8 以上概念

自 v2.33.2 起,當同一工作表上的 Table 已完整涵蓋自動篩選範圍時,BIFF8 寫入器也會抑制獨立的工作表層級 AUTOFILTERINFO / AUTOFILTER 記錄,因為 Excel 會在 Table 物件本身內嵌自動篩選下拉選單。自 v2.87.4 起,表格本身的 Feature11 中繼資料也會設定表格層級與欄位層級的 AutoFilter 旗標,並輸出 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)