Dokumentacja HotXLS

Metoda AddTable

Dołącza tabelę BIFF8 (Excel ListObject) do zakresu komórek, zwracając nowy obiekt TXLSTable, aby można było dostroić dodatkowe właściwości (StyleName, flagi pasków wierszy, TotalsRowShown) przed zapisem. Kształt odzwierciedla TXLSXWorksheet.AddTable po stronie XLSX, dzięki czemu kod niezależny od formatu może wywoływać tę samą sygnaturę. (Dostępne od v2.33.0.)

Składnia

function AddTable(const AName, ARange: WideString; AColumns: TStrings): TXLSTable;
AName WideString. Nazwa tabeli z odwołaniami strukturalnymi wyświetlana w Name Box programu Excel, np. 'SalesTable'. Staje się zarówno Name, jak i DisplayName zwracanego obiektu
ARange WideString. Zakres komórek, który obejmuje Table w notacji A1, np. 'A1:D10'. Pierwszy wiersz zakresu jest traktowany jako wiersz nagłówka
AColumns TStrings. Tekst nagłówka dla każdej kolumny. Musi zawierać dokładnie tyle wpisów, ile wynosi szerokość zakresu

Uwagi

Nowa tabela jest dodawana do kolekcji Tables arkusza. Jej StyleName domyślnie to 'TableStyleMedium2', a ShowRowStripes domyślnie True, co odpowiada temu co produkuje Excel i strona XLSX. Identyfikator (1..N na arkusz) jest przypisywany w czasie zapisu, jeśli go nie ustawisz

BIFF8 emituje grupę rekordów FEATHEADR11 / FEAT11 / LIST12 tylko przy SaveAs(xlExcel97). Zapis BIFF5 nie jest dotknięty (Tabele to koncepcja BIFF8+). Rekord LIST12 przechowuje StyleName i flagi pasków wierszy/kolumn używając układu klienta stylu tabeli MS-XLS. Od v2.33.2 rekordy AUTOFILTERINFO / AUTOFILTER na poziomie arkusza są pomijane gdy Tabela na tym samym arkuszu w pełni pokrywa zakres autofiltra, ponieważ Excel osadza autofiltr wewnątrz samego obiektu Tabeli; v2.87.4 zapisuje również odpowiednie metadane AutoFilter na poziomie tabeli i pola do FEAT11

Przykład

Ten przykład zapisuje czterokolumnowy region sprzedaży powiązany jako Tabela w A1:D10

var
  cols: TStringList;
begin
  cols := TStringList.Create;
  try
    cols.Add('Region');
    cols.Add('Product');
    cols.Add('Quarter');
    cols.Add('Revenue');
    Sheet.AddTable('SalesTable', 'A1:D10', cols);
  finally
    cols.Free;
  end;

Zobacz też