Freigeben über


Arbeiten mit SpreadsheetML-Tabellen

In diesem Thema wird die Open XML SDK Table-Klasse und ihre Beziehung zum SpreadsheetML-Schema des Open XML-Dateiformats erläutert. Weitere Informationen zur Gesamtstruktur der Teile und Elemente eines SpreadsheetML-Dokuments finden Sie unter Struktur eines SpreadsheetML-Dokuments (Open XML SDK).

Tabellen in SpreadsheetML

In den folgenden Informationen aus der Spezifikation ISO/IEC 29500 wird das table-Element (<table>) eingeführt.

In Tabellen können Listen von Informationen auf einem Arbeitsblatt organisiert und strukturiert werden. Tabellen verfügen über eindeutig bezeichnete Spalten, Zeilen und Datenbereiche. Dadurch erleichtern Tabellen den Benutzern das Sortieren, Analysieren, Formatieren, Verwalten, Hinzufügen und Löschen von Informationen.

Wenn ein Datenbereich zu einer Tabelle erklärt wird, werden Benutzer durch besondere Verhaltensweisen der Tabelle bei der Ausführung nützlicher Aktionen unterstützt. [Beispiel: Wenn der Benutzer weitere Daten in die Zeile über dem Ende der Tabelle eingibt, kann die Tabelle erweitert werden, und die Daten werden automatisch dem Datenbereich der Tabelle hinzugefügt. Entsprechend muss zum Hinzufügen einer Spalte einfach eine neue Spaltenüberschrift rechts oder links von den aktuellen Spaltenüberschriften eingegeben werden. Filter- und Sortierfunktionen können dem Benutzer automatisch über die Dropdownpfeile zur Verfügung gestellt werden. Es können spezielle berechnete Spalten erstellt werden, in denen Daten in der Tabelle zusammengefasst oder berechnet werden. Diese Spalten können entsprechend der Größe der Tabelle erweitert und verkleinert werden, wobei die korrekten Formelbezüge erhalten bleiben. Ende des Beispiels]

Tabellen können aus bereits im Arbeitsblatt vorhandenen Daten erstellt werden, aus einer externen Datenabfrage oder durch Zuordnen einer Auflistung wiederholter XML-Elemente zu einem Arbeitsblattbereich.

In der Blatt-XML werden die numerischen und textbasierten Daten gespeichert. In der Tabellen-XML werden die verschiedenen Attribute für das jeweilige Tabellenobjekt verzeichnet.

Eine SpreadsheetML-Tabelle ist ein logisches Konstrukt, das angibt, dass ein Datenbereich zu einem einzelnen Dataset gehört. SpreadsheetML verwendet bereits ein tabellenähnliches Modell zum Angeben von Werten in Zeilen und Spalten. Sie können jedoch auch eine Teilmenge des Blatts als Tabelle bezeichnen und ihr bestimmte Eigenschaften zuweisen, die für die Analyse nützlich sind. Mit einer Tabelle in SpreadsheetML können Sie Daten auf neue Weise analysieren, z. B. durch Filtern, Formatieren und Binden von Daten.

Wie andere Konstrukte in SpreadsheetML wird eine Tabelle eines Arbeitsblatts in einem separaten Teil des Pakets gespeichert. Der Tabellenteil enthält keine Tabellendaten. Die Daten werden in den Arbeitsblattzellen verwaltet. Weitere Informationen zu daten, die im Arbeitsblatt gespeichert sind, finden Sie unter Arbeiten mit Blättern.

In der folgenden Tabelle sind die allgemeinen Open XML SDK-Klassen aufgeführt, die beim Arbeiten mit der Table-Klasse verwendet werden.

SpreadsheetML-Element Open XML SDK-Klasse
tableColumn TableColumn
autoFilter AutoFilter

Open XML SDK-Tabellenklasse

Die Open XML SDKTable-Klasse stellt das Tabellenelement dar,>< das im Open XML-Dateiformatschema für SpreadsheetML-Dokumente definiert ist. Verwenden Sie die Table-Klasse zum Bearbeiten einzelner <table>-Elemente in einem SpreadsheetML-Dokument.

In den folgenden Informationen aus der Spezifikation ISO/IEC 29500 wird das table-Element (<table>) eingeführt.

Eine Instanz dieses Teiletyps enthält eine Beschreibung einer einzelnen Tabelle und die zugehörigen AutoFilter-Informationen. (Die Daten für die Tabelle werden im entsprechenden Arbeitsblattteil gespeichert.)

The root element for a part of this content type shall be table.

The table part contains the definition of a single table. When there are multiple tables on a worksheet there are multiple table parts. The root element for this part is the table. At a minimum, the table only needs information about the table columns that make up the table. However, to enable autofiltering you must define at least one autofilter, which can be empty. If you do not define any autofilter, autofiltering will be disabled when the document is opened in Excel.

Das table-Element verfügt über mehrere Attribute, mit denen die Tabelle und der dadurch abgedeckte Datenbereich identifiziert werden. Die Attribute id und name müssen in allen Tabellenteilen eindeutig sein. Das displayName-Attribut muss in allen Tabellenteilen und allen definierten Namen in der Arbeitsmappe eindeutig sein. Das name-Attribute wird vom Objektmodell in Excel verwendet. Das displayName-Attribut wird von Bezügen in Formeln verwendet. Das ref-Attribut dient zur Identifikation des von der Tabelle überdeckten Zellbereichs. Hierzu gehören nicht nur die Tabellendaten, sondern auch die Tabellenüberschrift mit den Spaltennamen. Weitere Informationen zu Tabellenattributen finden Sie in der Spezifikation ISO/IEC 29500.

TableColumn-Klasse

Wenn Sie einer Tabelle Spalten hinzufügen möchten, müssen Sie neue tableColumn-Elemente zu der tableColumns-Sammlung hinzufügen. Die Sammlung enthält ein count-Attribut, das die Anzahl der Spalten erfasst.

In den folgenden Informationen aus der Spezifikation ISO/IEC 29500 wird das TableColumn-Element (<tableColumn>) eingeführt.

Ein Element, das eine einzelne Spalte für diese Tabelle darstellt.

AutoFilter-Klasse

In den folgenden Informationen aus der Spezifikation ISO/IEC 29500 wird das AutoFilter-Element (<autoFilter>) eingeführt.

Durch AutoFilter werden Zeilen nach Filterkriterien vorübergehend ausgeblendet, was spaltenweise für eine Datentabelle im Arbeitsblatt erfolgt. Durch diese Auflistung werden AutoFilter-Einstellungen ausgedrückt.

Beispiel: In diesem Beispiel gibt ein Filter an, dass nur Werte größer als 0,5 angezeigt werden sollen. Der Filter wird auf den Bereich B3:E8 angewendet, und die Kriterien werden auf die Werte in der Spalte mit colId=„1“ angewendet (Null-basierte Spaltennummerierung, von links nach rechts). Daher müssen alle Zeilen ausgeblendet werden, wenn der Wert in dieser Spalte kleiner als oder gleich 0,5 ist.

<autoFilter ref="B3:E8">
    <filterColumn colId="1">
        <customFilters>
            <customFilter operator="greaterThan" val="0.5"/>
        </customFilters>
    </filterColumn>
</autoFilter>

SpreadsheetML-Beispiel

Dieses Beispiel zeigt die XML für eine Datei, die eine Tabelle auf "Sheet1" enthält. Die Tabelle enthält 3 Spalten und 3 Zeilen sowie eine Spaltenüberschrift.

The following XML defines the worksheet and is contained in the "sheet1.xml" file. The worksheet XML file contains the actual data displayed in the table, and contains the tablePart element that references the "table1.xml" file, which contains the table definition.

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="https://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:mc="https://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="x14ac" xmlns:x14ac="https://schemas.microsoft.com/office/spreadsheetml/2009/9/ac">
        <dimension ref="A1:C4"/>
        <sheetViews>
            <sheetView tabSelected="1" workbookViewId="0">
                <selection sqref="A1:C4"/>
            </sheetView>
        </sheetViews>
        <sheetFormatPr defaultRowHeight="15" x14ac:dyDescent="0.25"/>
        <cols>
            <col min="1" max="3" width="11" customWidth="1"/>
        </cols>
        <sheetData>
            <row r="1" spans="1:3" x14ac:dyDescent="0.25">
                <c r="A1" t="s">
                    <v>0</v>
                </c>
                <c r="B1" t="s">
                    <v>1</v>
                </c>
                <c r="C1" t="s">
                    <v>2</v>
                </c>
            </row>
            <row r="2" spans="1:3" x14ac:dyDescent="0.25">
                <c r="A2">
                    <v>1</v>
                </c>
                <c r="B2">
                    <v>2</v>
                </c>
                <c r="C2">
                    <v>3</v>
                </c>
            </row>
            <row r="3" spans="1:3" x14ac:dyDescent="0.25">
                <c r="A3">
                    <v>4</v>
                </c>
                <c r="B3">
                    <v>5</v>
                </c>
                <c r="C3">
                    <v>6</v>
                </c>
            </row>
            <row r="4" spans="1:3" x14ac:dyDescent="0.25">
                <c r="A4">
                    <v>7</v>
                </c>
                <c r="B4">
                    <v>8</v>
                </c>
                <c r="C4">
                    <v>9</v>
                </c>
            </row>
        </sheetData>
        <pageMargins left="0.7" right="0.7" top="0.75" bottom="0.75" header="0.3" footer="0.3"/>
        <tableParts count="1">
            <tablePart r:id="rId1"/>
        </tableParts>
    </worksheet>

The following XML defines the table and is contained in the "table1.xml" file. The table XML file defines how the range of the table and how the table looks, and defines any autofilters for the table.

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <table xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" id="1" name="Table1" displayName="Table1" ref="A1:C4" totalsRowShown="0">
        <autoFilter ref="A1:C4"/>
        <tableColumns count="3">
            <tableColumn id="1" name="Column1"/>
            <tableColumn id="2" name="Column2"/>
            <tableColumn id="3" name="Column3"/>
        </tableColumns>
        <tableStyleInfo name="TableStyleMedium2" showFirstColumn="0" showLastColumn="0" showRowStripes="1" showColumnStripes="0"/>
    </table>