Trabalhando com tabelas spreadsheetML
Este tópico discute a classe Open XML SDK Table e como ela se relaciona com o esquema Open XML File Format SpreadsheetML. 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 (Open XML SDK).
Tabelas em PlanilhaML
As informações a seguir da especificação ISO/IEC 29500 introduzem o elemento tabela (<tabela>).
Uma tabela ajuda a organizar e fornecer estrutura para listas de informações em uma planilha. As tabelas rotularam claramente colunas, linhas e regiões de dados. As tabelas facilitam a classificação, análise, formato, gerenciamento, adição e exclusão de informações dos usuários.
Se uma região de dados for designada como uma Tabela, comportamentos especiais poderão ser aplicados que ajudam 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 que resumem ou calculam dados na tabela. Essas colunas têm a capacidade de expandir e reduzir de acordo com o tamanho da tabela e manter a referenciação de fórmula adequada. exemplo final]
As tabelas podem ser criadas a partir de dados já presentes na planilha, de uma consulta de dados externa ou de mapeamento de uma coleção de elementos XML repetidos para um intervalo de planilhas.
A folha XML armazena os dados numéricos e textuais. A tabela XML registra os vários atributos para o objeto de tabela específico.
Uma tabela SpreadsheetML é um constructo lógico 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 folha como uma tabela e dar-lhe determinadas propriedades úteis para análise. Uma tabela no SpreadsheetML permite que você analise dados de novas maneiras, como usando filtragem, formatação e associação de dados.
Como outros constructos no SpreadsheetML, uma tabela em uma planilha é armazenada em uma parte separada dentro do pacote. A parte da tabela não contém dados de tabela. Os dados são mantidos nas células da planilha. Para obter mais informações sobre os dados armazenados na planilha, consulte Trabalhar com planilhas.
A tabela a seguir lista as classes comuns de SDK Open XML usadas ao trabalhar com a classe Table .
Elemento SpreadsheetML | Classe SDK Open XML |
---|---|
Tablecolumn | TableColumn |
Autofiltro | AutoFilter |
Abrir classe de tabela do SDK XML
A classe Open XML SDKTable representa o elemento table (<table>) definido no esquema Open XML File Format para documentos SpreadsheetML. Use a classe Table para manipular elementos de tabela> individuais < em um documento SpreadsheetML.
As informações a seguir da especificação ISO/IEC 29500 introduzem o elemento tabela (<tabela>).
Uma instância desse tipo de parte contém uma descrição de uma única tabela e suas informações de preenchimento 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 tabela.
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 da tabela. O elemento raiz dessa parte é a tabela. No mínimo, a tabela só precisa de informações sobre as colunas de tabela que compõem a tabela. No entanto, para habilitar o preenchimento automático, você deve definir pelo menos um filtro automático, que pode estar vazio. Se você não definir nenhum filtro automático, o preenchimento automático será desabilitado quando o documento for aberto no Excel.
O elemento table tem vários atributos usados para identificar a tabela e o intervalo de dados que ele aborda. Os atributos id e name devem ser exclusivos em todas as partes da tabela. O atributo displayName deve ser exclusivo em todas as partes da tabela e exclusivo em todos os nomes definidos na pasta de trabalho. O atributo de nome é usado pelo modelo de objeto no Excel. O atributo displayName é usado por referências em fórmulas. O atributo ref é usado para identificar o intervalo de células que a tabela cobre. 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.
Classe Coluna de Tabela
Para adicionar colunas à tabela, adicione novos elementos tableColumn à coleção tableColumns . A coleção tem um atributo de contagem que rastreia o número de colunas.
As informações a seguir da especificação ISO/IEC 29500 introduzem o elemento TableColumn (<tableColumn>).
Um elemento que representa uma única coluna para esta tabela.
Classe de filtro automático
As informações a seguir da especificação ISO/IEC 29500 introduzem o elemento AutoFilter (<autoFilter>).
O AutoFilter oculta temporariamente linhas com base em critérios de filtro, que é aplicado coluna por coluna a uma tabela de dados na planilha. Essa coleção expressa as configurações do AutoFilter.
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 a valores na coluna cujo colId='1' (numeração de coluna baseada em zero, da esquerda para a direita). Portanto, todas as linhas devem ser ocultas 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 planilha
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 elemento tablePart 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="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>
O XML a seguir define a tabela e está contido no arquivo "table1.xml". O arquivo XML da tabela define como o intervalo da tabela e a aparência da tabela e define todos os preenchimentos automáticos para a tabela.
<?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>