Trabalhar com tabelas SpreadsheetML

Este tópico discute a classe Open XML SDK Table e como ela se relaciona com o esquema SpreadsheetML do formato de arquivo Open XML. Para obter mais informações sobre a estrutura geral das partes e elementos que compõem um documento SpreadsheetML, consulte Estrutura de um documento SpreadsheetML (SDK do Open XML).

Tabelas em SpreadsheetML

As seguintes informações da especificação ISO/IEC 29500 introduzem o table elemento (<table/>).

Uma tabela ajuda a organizar e fornecer estrutura para listas de informações em uma planilha. As tabelas têm colunas, linhas e regiões de dados claramente rotuladas. As tabelas tornam mais fácil para os usuários classificar, analisar, formatar, gerenciar, adicionar e excluir informações.

Se uma região de dados for designada como uma tabela, comportamentos especiais poderão ser aplicados, o que ajudará o usuário a executar ações úteis. [Exemplo: se o usuário digitar dados adicionais na linha adjacente à parte inferior da tabela, a tabela poderá expandir e adicionar automaticamente esses dados à região de dados da tabela. Da mesma forma, adicionar uma coluna é tão fácil quanto digitar um novo título de coluna à direita ou à esquerda dos títulos de coluna atuais. As habilidades de filtragem e classificação podem ser exibidas automaticamente para o usuário por meio das setas suspensas. Colunas calculadas especiais podem ser criadas para resumir ou calcular dados na tabela. Essas colunas têm a capacidade de expandir e reduzir de acordo com o tamanho da tabela e manter a referência de fórmula adequada. exemplo de término]

As tabelas podem ser criadas com base nos dados já presentes na planilha, em uma consulta de dados externos ou no mapeamento de uma coleção de elementos XML repetidos para um intervalo de planilhas.

O XML da planilha armazena os dados numéricos e textuais. O XML da tabela registra os vários atributos para o objeto de tabela específico.

Uma tabela SpreadsheetML é uma construção lógica que especifica que um intervalo de dados pertence a um único conjunto de dados. O SpreadsheetML já usa um modelo semelhante a uma tabela para especificar valores em linhas e colunas, mas você também pode rotular um subconjunto da planilha como a table e dar a ele determinadas propriedades que são úteis para análise. Uma tabela em SpreadsheetML permite que você analise dados de novas maneiras, como usando filtragem, formatação e associação de dados.

Como outras construções no SpreadsheetML, uma tabela em uma planilha é armazenada em uma parte separada dentro do pacote. A parte da tabela não contém nenhum dado da tabela. Os dados são mantidos nas células da planilha. Para obter mais informações sobre os dados armazenados na planilha, consulte Trabalhando com planilhas.

A tabela a seguir lista as classes comuns do Open XML SDK usadas ao trabalhar com a Table classe.

Elemento SpreadsheetML Classe Open XML SDK
<tableColumn/> TableColumn
<autoFilter/> AutoFilter

Classe de tabela Open XML SDK

A classe Open XML SDK Table representa o elemento table (<table/>) definido no esquema Open XML File Format para documentos SpreadsheetML. Use a Table classe para manipular elementos individuais <table/> em um documento SpreadsheetML.

As seguintes informações da especificação ISO/IEC 29500 introduzem o table elemento (<table/>).

Uma instância desse tipo de parte contém uma descrição de uma única tabela e suas informações de filtro automático. (Os dados da tabela são armazenados na parte correspondente da Planilha.)

O elemento raiz de uma parte desse tipo de conteúdo deve ser table.

A parte da tabela contém a definição de uma única tabela. Quando há várias tabelas em uma planilha, há várias partes na tabela. O elemento raiz dessa parte é a tabela. No mínimo, a tabela só precisa de informações sobre as colunas que a compõem. No entanto, para habilitar a filtragem automática, você deve definir pelo menos um filtro automático, que pode estar vazio. Se você não definir nenhum filtro automático, a filtragem automática será desabilitada quando o documento for aberto no Excel.

O table elemento tem vários atributos usados para identificar a tabela e o intervalo de dados que ela abrange. Os id atributos and name devem ser exclusivos em todas as partes da tabela. O displayName atributo deve ser exclusivo em todas as partes da tabela e exclusivo em todos os nomes definidos na pasta de trabalho. O name atributo é usado pelo modelo de objeto no Excel. O displayName atributo é usado por referências em fórmulas. O ref atributo é usado para identificar o intervalo de células que a tabela abrange. Isso inclui não apenas os dados da tabela, mas também o cabeçalho da tabela que contém nomes de coluna. Para obter mais informações sobre atributos de tabela, consulte a especificação ISO/IEC 29500.

Tabela Coluna Classe

Para adicionar colunas à tabela, adicione novos tableColumn elementos à tableColumns coleção. A coleção tem um atributo count que rastreia o número de colunas.

As seguintes informações da especificação ISO/IEC 29500 introduzem o TableColumn elemento (<tableColumn/>).

Um elemento que representa uma única coluna para esta tabela.

Classe de Filtro Automático

As seguintes informações da especificação ISO/IEC 29500 introduzem o AutoFilter elemento (<autoFilter/>).

O Filtro Automático oculta temporariamente linhas com base em critérios de filtro, que são aplicados coluna por coluna a uma tabela de dados na planilha. Esta coleção expressa as configurações de AutoFiltro.

Exemplo: Este exemplo expressa um filtro que indica 'mostrar apenas valores maiores que 0,5'. O filtro está sendo aplicado ao intervalo B3:E8 e os critérios estão sendo aplicados aos valores na coluna cujo colId='1' (numeração de coluna baseada em zero, da esquerda para a direita). Portanto, todas as linhas devem ser ocultadas se o valor nessa coluna específica for menor ou igual a 0,5.

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

Exemplo de SpreadsheetML

Este exemplo mostra o XML de um arquivo que contém uma tabela na Planilha1. A tabela contém três colunas e três linhas, além de um cabeçalho de coluna.

O XML a seguir define a planilha e está contido no arquivo "sheet1.xml". O arquivo XML da planilha contém os dados reais exibidos na tabela e contém o tablePart elemento que faz referência ao arquivo "table1.xml", que contém a definição da tabela.

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://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>

O XML a seguir define a tabela e está contido no arquivo "table1.xml". O arquivo XML da tabela define a aparência do intervalo e da tabela, e define filtros automáticos para ela.

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