Compartilhar via


Como trabalhar com tabelas do WordprocessingML

Este tópico aborda a classe Open XML SDK Table e como se relaciona com o esquema WordprocessingML formatos de ficheiro Open XML do Office.

Tabelas no WordprocessingML

O texto seguinte da especificação ISO/IEC 29500 apresenta o elemento de tabela Open XML WordprocessingML.

Outro tipo de conteúdo ao nível do bloco no WordprocessingML, uma tabela é um conjunto de parágrafos (e outros conteúdos ao nível do bloco) dispostos em linhas e colunas.

As tabelas no WordprocessingML são definidas através do elemento tbl, que é análogo à etiqueta HTML <table> . O elemento de tabela especifica a localização de uma tabela presente no documento.

Um tbl elemento tem dois elementos que definem as respetivas propriedades: tblPr, que define o conjunto de propriedades ao nível da tabela (como o estilo e a largura) e tblGrid, que define o esquema de grelha da tabela. Um tbl elemento também pode conter um número arbitrário diferente de zero de linhas, em que cada linha é especificada com um tr elemento. Cada tr elemento pode conter um número arbitrário diferente de zero de células, em que cada célula é especificada com um tc elemento.

© ISO/IEC 29500: 2016

A tabela seguinte lista algumas das classes de SDK Open XML mais comuns utilizadas ao trabalhar com tabelas.

Elemento XML Abrir Classe SDK XML
Célula de Conteúdo Célula de Conteúdo
gridCol Coluna de Grelha
tblGrid TableGrid
tblPr TableProperties
tc TableCell
tr TableRow

Abrir Classe de Tabela do SDK XML

A classe Open XML SDK Table representa o <tbl> elemento definido no esquema Open XML File Format para documentos wordprocessingML, conforme abordado acima. Utilize um objeto Tabela para manipular uma tabela individual num documento do 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 propriedades ao nível da tabela para uma tabela. Utilize um objeto TableProperties para definir propriedades ao nível da tabela para uma tabela num documento do 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 os elementos subordinados da coluna <gridCol> de grelha, o <tblGrid> elemento define as colunas de uma tabela e especifica a largura predefinida das células da tabela nas colunas. Utilize um objeto TableGrid para definir as colunas numa tabela num documento do WordprocessingML.

Classe GridColumn

A classe Open XML SDK GridColumn representa o elemento de coluna <gridCol> de grelha definido no esquema Open XML File Format para documentos wordprocessingML. O <gridCol> elemento é um elemento subordinado do <tblGrid> elemento e define uma única coluna numa tabela num documento do WordprocessingML. Utilize a classe GridColumn para manipular uma coluna individual num documento do 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 numa tabela num documento wordprocessingML, análogo à <tr> etiqueta em HTML. Uma linha de tabela também pode ter formatação aplicada ao mesmo através de um elemento de propriedades de linha de <trPr> 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> da tabela definido no esquema Open XML File Format para documentos wordprocessingML. O <tc> elemento define uma célula numa tabela num documento do WordprocessingML, análoga à <td> etiqueta em HTML. Uma célula de tabela também pode ter formatação aplicada ao mesmo com um elemento de propriedades de célula de <tcPr> tabela. A classe Open XML SDK TableCellProperties representa o <tcPr> elemento .

Open XML SDK Code Example

O código seguinte insere uma tabela com 1 linha e 3 colunas num 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 este código é executado, o seguinte XML é escrito 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>

Confira também