Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este tópico discute a classe Open XML SDK Table e como ela se relaciona com o esquema WordprocessingML de formatos de arquivo Open XML do Office.
Tabelas em WordprocessingML
O texto a seguir da especificação ISO/IEC 29500 apresenta o elemento de tabela WordprocessingML do Open XML.
Outro tipo de conteúdo de nível de bloco no WordprocessingML, Uma tabela é um conjunto de parágrafos (e outros conteúdos de nível de bloco) organizados em linhas e colunas.
As tabelas em WordprocessingML são definidas por meio do elemento tbl, que é análogo à marca HTML <table> . O elemento table especifica o local de uma tabela presente no documento.
Um tbl elemento tem dois elementos que definem suas propriedades: tblPr, que define o conjunto de propriedades de toda a tabela (como estilo e largura) e tblGrid, que define o layout da grade da tabela. Um tbl elemento também pode conter um número arbitrário de linhas diferentes de zero, em que cada linha é especificada com um tr elemento. Cada tr elemento pode conter um número arbitrário de células diferentes de zero, onde cada célula é especificada com um tc elemento.
© ISO/IEC 29500: 2016
A tabela a seguir lista algumas das classes mais comuns do Open XML SDK usadas ao trabalhar com tabelas.
| Elemento XML | Classe Open XML SDK |
|---|---|
| Célula de Conteúdo | Célula de Conteúdo |
| gridCol | GridColumn |
| tblGrid | TableGrid |
| tblPr | Propriedades da tabela |
| TC | TableCell |
| tr | TableRow |
Classe de tabela Open XML SDK
A classe Open XML SDK Table representa o <tbl> elemento definido no esquema Open XML File Format para documentos WordprocessingML, conforme discutido acima. Use um objeto Table para manipular uma tabela individual em um documento WordprocessingML.
Classe TableProperties
A classe Open XML SDK TableProperties representa o <tblPr> elemento definido no esquema Open XML File Format para documentos WordprocessingML. O <tblPr> elemento define as propriedades de toda a tabela para uma tabela. Use um objeto TableProperties para definir propriedades em toda a tabela para uma tabela em um documento WordprocessingML.
Classe TableGrid
A classe Open XML SDK TableGrid representa o <tblGrid> elemento definido no esquema Open XML File Format para documentos WordprocessingML. Em conjunto com elementos filho de coluna <gridCol> de grade, o <tblGrid> elemento define as colunas de uma tabela e especifica a largura padrão das células da tabela nas colunas. Use um objeto TableGrid para definir as colunas em uma tabela em um documento WordprocessingML.
Classe GridColumn
A classe Open XML SDK GridColumn representa o elemento de coluna <gridCol> de grade definido no esquema Open XML File Format para documentos WordprocessingML. O <gridCol> elemento é um elemento filho do <tblGrid> elemento e define uma única coluna em uma tabela em um documento WordprocessingML. Use a classe GridColumn para manipular uma coluna individual em um documento WordprocessingML.
Classe TableRow
A classe Open XML SDK TableRow representa o elemento de linha <tr> da tabela definido no esquema Open XML File Format para documentos WordprocessingML. O <tr> elemento define uma linha em uma tabela em um documento WordprocessingML, análogo à <tr> marca em HTML. Uma linha da tabela também pode ter formatação aplicada a ela usando um elemento de propriedades <trPr> da linha da tabela. A classe Open XML SDK TableRowProperties representa o <trPr> elemento.
Classe TableCell
A classe Open XML SDK TableCell representa o elemento de célula <tc> de tabela definido no esquema Open XML File Format para documentos WordprocessingML. O <tc> elemento define uma célula em uma tabela em um documento WordprocessingML, análogo à <td> marca em HTML. Uma célula de tabela também pode ter formatação aplicada a ela usando um elemento de propriedades <tcPr> da célula da tabela. A classe Open XML SDK TableCellProperties representa o <tcPr> elemento.
Exemplo de código do Open XML SDK
O código a seguir insere uma tabela com 1 linha e 3 colunas em um documento.
static string InsertTableInDoc(string filepath)
{
// Open a WordprocessingDocument for editing using the filepath.
using (WordprocessingDocument wordprocessingDocument = WordprocessingDocument.Open(filepath, true))
{
// Assign a reference to the existing document body or add one if necessary.
if (wordprocessingDocument.MainDocumentPart is null)
{
wordprocessingDocument.AddMainDocumentPart();
}
if (wordprocessingDocument.MainDocumentPart!.Document is null)
{
wordprocessingDocument.MainDocumentPart.Document = new Document();
}
if (wordprocessingDocument.MainDocumentPart.Document.Body is null)
{
wordprocessingDocument.MainDocumentPart.Document.Body = new Body();
}
Body body = wordprocessingDocument.MainDocumentPart.Document.Body;
// Create a table.
Table tbl = new Table();
// Set the style and width for the table.
TableProperties tableProp = new TableProperties();
TableStyle tableStyle = new TableStyle() { Val = "TableGrid" };
// Make the table width 100% of the page width.
TableWidth tableWidth = new TableWidth() { Width = "5000", Type = TableWidthUnitValues.Pct };
// Apply
tableProp.Append(tableStyle, tableWidth);
tbl.AppendChild(tableProp);
// Add 3 columns to the table.
TableGrid tg = new TableGrid(new GridColumn(), new GridColumn(), new GridColumn());
tbl.AppendChild(tg);
// Create 1 row to the table.
TableRow tr1 = new TableRow();
// Add a cell to each column in the row.
TableCell tc1 = new TableCell(new Paragraph(new Run(new Text("1"))));
TableCell tc2 = new TableCell(new Paragraph(new Run(new Text("2"))));
TableCell tc3 = new TableCell(new Paragraph(new Run(new Text("3"))));
tr1.Append(tc1, tc2, tc3);
// Add row to the table.
tbl.AppendChild(tr1);
// Add the table to the document
body.AppendChild(tbl);
return tbl.LocalName;
}
}
Quando esse código é executado, o XML a seguir é gravado no documento WordprocessingML especificado no código anterior.
<w:tbl>
<w:tblPr>
<w:tblStyle w:val="TableGrid" />
<w:tblW w:w="5000" w:type="pct" />
</w:tblPr>
<w:tblGrid>
<w:gridCol />
<w:gridCol />
<w:gridCol />
</w:tblGrid>
<w:tr>
<w:tc>
<w:p>
<w:r>
<w:t>1</w:t>
</w:r>
</w:p>
</w:tc>
<w:tc>
<w:p>
<w:r>
<w:t>2</w:t>
</w:r>
</w:p>
</w:tc>
<w:tc>
<w:p>
<w:r>
<w:t>3</w:t>
</w:r>
</w:p>
</w:tc>
</w:tr>
</w:tbl>