Verknüpft eine BIFF8-Tabelle (Excel ListObject) mit einem Zellenbereich und gibt das neue
TXLSTable-Objekt zurück, damit zusätzliche Eigenschaften (
StyleName, bandierte Zeilenflags,
TotalsRowShown) vor dem Speichern angepasst werden können. Die Form spiegelt
TXLSXWorksheet.AddTable auf der XLSX-Seite wider, sodass formatunabhängiger Code die gleiche Signatur aufrufen kann. (Verfügbar seit v2.33.0.)
Syntax
function AddTable(
const AName, ARange: WideString;
AColumns: TStrings):
TXLSTable;
| AName |
WideString. Der Tabellenname mit strukturiertem Verweis, der in Excel im Namensfeld angezeigt wird, z. B. 'SalesTable'. Wird im zurückgegebenen Objekt sowohl zu Name als auch zu DisplayName |
| ARange |
WideString. Der Zellbereich, den die Tabelle in A1-Notation abdeckt, z. B. 'A1:D10'. Die erste Zeile des Bereichs wird als Kopfzeile behandelt |
| AColumns |
TStrings. Kopftext pro Spalte. Muss genau so viele Einträge enthalten, wie der Bereich breit ist |
Hinweise
Die neue Tabelle wird der
Tables-Sammlung des Tabellenblatts hinzugefügt. Der
StyleName ist standardmäßig
'TableStyleMedium2' und
ShowRowStripes ist standardmäßig True, was Excel und der XLSX-Seite entspricht. Die ID (1..N pro Blatt) wird beim Speichern zugewiesen, wenn sie nicht voreingestellt wurde
BIFF8 gibt die FEATHEADR11 / FEAT11 / LIST12-Datensatzgruppe nur bei SaveAs(xlExcel97) aus. BIFF5-Speicherungen sind davon nicht betroffen (Tabellen sind ein BIFF8+-Konzept). Der LIST12-Datensatz speichert StyleName und die bandierte Zeile / bandierte Spalte-Flags im MS-XLS-Tabellenstil-Client-Layout. Ab v2.33.2 werden die Blatt-AUTOFILTERINFO/AUTOFILTER-Datensätze unterdrückt, wenn eine Tabelle auf demselben Blatt den AutoFilter-Bereich vollständig abdeckt, da Excel den AutoFilter im Tabellenobjekt selbst einbettet; v2.87.4 schreibt auch die entsprechenden AutoFilter-Metadaten auf Tabellen- und Feldebene in FEAT11
Beispiel
Dieses Beispiel schreibt eine vierspaltige Verkaufsregion, die als Tabelle bei A1:D10 gebunden ist
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;
Siehe auch