Документация HotXLS

Класс TXLSTable

Модуль: lxHandle

Таблицы BIFF8 (.xls) (Excel ListObjects). Таблица присоединяет к прямоугольному диапазону именованную область со структурированными ссылками, встроенным стилем и встроенным автофильтром. Коллекция находится в TXLSWorksheet.Tables; чаще всего используйте AddTable как точку входа. По форме это соответствует TXLSXTable / TXLSXTables на стороне XLSX, так что код, добавляющий таблицы в книгу, может не зависеть от формата. Доступно начиная с 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 или флаги полосатых строк

Поведение при сохранении

При SaveAs(xlExcel97) для BIFF8 лист выводит один заголовок таблицы FEATHEADR11 ($0871), затем каждая таблица выводит полезные данные FEAT11 ($0872) TableFeatureType плюс стиль LIST12 ($0877) непосредственно перед EOF листа, после защиты листа. Начиная с v2.87.4 запись стиля LIST12 использует раскладку MS-XLS List12TableStyleClientInfo, включая флаги полосатых строк и столбцов и имя стиля как XLUnicodeString HotXLS больше не выводит устаревшую запись FEATHEADR ($0867) для метаданных таблицы. Книги без таблиц сохраняются точно так же, как и раньше, и не несут накладных расходов потока записей таблиц. Сохранение BIFF5 не затрагивается, поскольку Tables — это концепция BIFF8+

Начиная с v2.33.2 писатель BIFF8 также подавляет отдельные записи уровня листа AUTOFILTERINFO / AUTOFILTER, когда таблица на том же листе полностью покрывает диапазон автофильтра, поскольку Excel встраивает раскрывающийся список автофильтра прямо в объект Table. Начиная с v2.87.4 собственные метаданные таблицы Feature11 также устанавливают флаги AutoFilter на уровне таблицы и поля и выводят пустые блоки Feat11FdaAutoFilter по каждому столбцу, которые Excel ожидает для раскрывающихся списков фильтра таблицы

Пример

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)