Partager via


Utilisation des tables SpreadsheetML

Cette rubrique décrit la classe Table du Kit de développement logiciel (SDK) Open XML et sa relation avec le schéma SpreadsheetML au format de fichier Open XML. Pour en savoir plus sur la structure globale des composants et des éléments qui composent un document SpreadsheetML, consultez Structure d’un document SpreadsheetML (Kit de développement logiciel Open XML).

Tables dans SpreadsheetML

Les informations suivantes de la spécification ISO/IEC 29500 présentent l’élément table (<table>).

Une table fournit une structure pour organiser des listes d'informations dans une feuille de calcul. Une table possède des colonnes clairement libellées, des lignes et des zones de données. Les tables permettent aux utilisateurs de trier, analyser, mettre en forme, gérer, ajouter et supprimer des informations plus facilement.

Si une zone de données est désignée comme table, des comportements spéciaux peuvent être appliqués pour effectuer des opérations utiles. [Exemple : si l'utilisateur tape des données supplémentaires dans la ligne adjacente à la base de la table, la table peut s'étendre et ajouter automatiquement ces données à sa zone de données. De même, l'ajout d'une colonne se fait simplement en tapant un nouvel en-tête de colonne à la droite ou à la gauche des en-tête de colonnes actuels. Des possibilités de tri et de filtrage peuvent être automatiquement exposées via les flèches déroulantes. Des colonnes calculées spéciales peuvent être créées pour récapituler ou calculer des données dans la table. Ces colonnes ont la capacité de s'étendre ou de se réduire en fonction de la taille de la table, et conservent le référencement adéquat des formules. Fin de l'exemple]

Il est possible de créer des tables à partir de données déjà présentes dans la feuille de calcul, à partir d'une requête de données externes, ou à partir du mappage d'une collection d'éléments XML répétés vers une plage de feuille de calcul.

La feuille XML stocke les données numériques et textuelles. La table XML enregistre les divers attributs d'un objet table particulier.

Une table SpreadsheetML est une construction logique qui spécifie qu'une plage de données appartient à un même ensemble de données. SpreadsheetML utilise déjà un modèle de type tableau pour spécifier les valeurs des lignes et des colonnes, mais vous pouvez également désigner un sous-ensemble de la feuille en tant que table et lui attribuer certaines propriétés qui sont utiles pour l'analyse. Une table dans SpreadsheetML vous permet d'analyser davantage des données, par exemple en utilisant le filtrage, la mise en forme et la liaison de données.

Comme d'autres constructions de SpreadsheetML, une table dans une feuille de calcul est stockée dans un composant distinct à l'intérieur du package. Ce composant ne contient pas les données de la table. Les données sont conservées dans les cellules de la feuille de calcul. Pour plus d’informations sur les données stockées dans la feuille de calcul, consultez Utilisation des feuilles.

Le tableau suivant répertorie les classes courantes du Kit de développement logiciel (SDK) Open XML utilisées lors de l’utilisation de la classe Table .

Élément SpreadsheetML Classe du Kit de développement logiciel (SDK) Open XML
Tablecolumn TableColumn
Autofilter AutoFilter

Classe de table du Kit de développement logiciel (SDK) Open XML

La classeTable du Kit de développement logiciel (SDK) Open XML représente l’élément table (<table>) défini dans le schéma de format de fichier Open XML pour les documents SpreadsheetML. Utilisez la classe Table pour manipuler des éléments de table> individuels < dans un document SpreadsheetML.

Les informations suivantes de la spécification ISO/IEC 29500 présentent l’élément table (<table>).

Une instance de ce type de composant contient une description d’une table unique et ses informations de filtre automatique. (Les données de la table sont stockées dans la partie Feuille de calcul correspondante.)

L'élément racine d'un composant de ce type de contenu doit être une table.

Le composant table contient la définition d'une seule table. S'il y a plusieurs tables sur une feuille de calcul, il y a plusieurs composants table. L'élément racine de ce composant est la table. Au minimum, la table nécessite uniquement les informations sur les colonnes qui la constituent. Cependant, pour permettre le filtrage automatique, vous devez définir au moins un filtre automatique, qui peut être vide. Si vous ne définissez aucun filtre automatique, le filtrage automatique sera désactivé à l'ouverture du document dans Excel.

L'élément table possède plusieurs attributs pour identifier la table et la plage de données qu'elle contient. Les attributs id et name doivent être uniques parmi tous les composants table. L'attribut displayName doit être unique parmi tous les composants table et parmi tous les noms définis dans le classeur. L'attribut name est utilisé par le modèle objet dans Excel. L'attribut displayName est utilisé par les références dans les formules. L'attribut ref est utilisé pour identifier la plage de cellules contenue dans la table. Cela n'inclut pas seulement les données de la table, mais aussi l'en-tête de la table contenant les noms des colonnes. Pour plus d’informations sur les attributs de table, voir les spécifications ISO/IEC 29500.

Classe TableColumn

Pour ajouter des colonnes à votre table, vous ajoutez des éléments tableColumn à la collection tableColumns. Cette collection possède un attribut qui comptabilise le nombre de colonnes.

Les informations suivantes de la spécification ISO/IEC 29500 présentent l’élément TableColumn (<tableColumn>).

Un élément représentant une seule colonne de cette table.

Classe AutoFilter

Les informations suivantes de la spécification ISO/IEC 29500 présentent l’élément AutoFilter (<autoFilter>).

Le filtre automatique masque temporairement des lignes en fonction de critères de filtrage, appliqués colonne par colonne à la table de données dans la feuille de calcul. Cette collection exprime les paramètres de filtre automatique.

Exemple : cet exemple exprime un filtre indiquant « afficher uniquement les valeurs supérieures à 0,5 ». Le filtre est appliqué à la plage B3:E8, et les critères sont appliqués aux valeurs dans la colonne telle que colId='1' (numérotation des colonnes de base zéro, de gauche à droite). Par conséquent, toutes les lignes doivent être masquées si la valeur dans cette colonne particulière est inférieure ou égale à 0,5.

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

Exemple de document SpreadsheetML

Cet exemple illustre le code XML d'un fichier contenant une table sur la feuille Sheet1. La table contient 3 colonnes et 3 lignes, plus un en-tête de colonne.

Le code XML suivant définit la feuille de calcul ; il est contenu dans le fichier sheet1.xml. Ce fichier contient les données réelles affichées dans la table, et contient l'élément tablePart qui référence le fichier table1.xml contenant la définition de la table.

    <?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>

Le code XML suivant définit la table ; il est contenu dans le fichier table1.xml. Ce fichier définit l'apparence de la plage dans la table et de la table, ainsi que le filtrage automatique éventuel pour la 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>