Share via


Trabajar con tablas WordprocessingML

En este tema se describe la clase Table del SDK de Open XML y cómo se relaciona con el esquema WordprocessingML de formatos de archivo Open XML de Office.

Tablas en WordprocessingML

El siguiente texto de la especificación ISO/IEC 29500 presenta el elemento de tabla de WordprocessingML de Office Open XML.

Una tabla, otro tipo de contenido a nivel de bloque de WordprocessingML, es un conjunto de párrafos (y de otro contenido a nivel de bloque) organizados en filas y columnas.

Las tablas de WordprocessingML se definen a través del elemento tbl, que es análogo a la etiqueta de tabla> HTML<. El elemento de tabla especifica la ubicación de una tabla presente en el documento.

Un elemento tbl tiene dos elementos que definen sus propiedades: tblPr, que define el conjunto de propiedades para toda la tabla (como el estilo y el ancho), y tblGrid, que define el diseño de cuadrícula de la tabla. Un elemento tbl también puede contener un número de filas arbitrario distinto de cero, donde cada fila se especifica con un elemento tr. Cada elemento tr puede contener un número de celdas arbitrario distinto de cero, donde cada celda se especifica con un elemento tc.

© ISO/IEC29500: 2008.

En la siguiente tabla se enumeran algunas de las clases más comunes de Open XML SDK que se usan al trabajar con tablas.

Elemento XML Open XML SDK (clase)
Celda de contenido Celda de contenido
gridCol GridColumn
tblGrid TableGrid
tblPr TableProperties
Tc TableCell
tr TableRow

Clase de tabla del SDK de Open XML

La clase Table del SDK de Open XML representa el elemento (<tbl>) definido en el esquema de formato de archivo Open XML para documentos WordprocessingML, como se ha explicado anteriormente. Use un objeto Table para manipular una tabla individual en un documento WordprocessingML.

Clase TableProperties

La clase TableProperties del SDK de Open XML representa el elemento (<tblPr>) definido en el esquema de formato de archivo Open XML para documentos WordprocessingML. El <elemento tblPr> define las propiedades de toda la tabla para una tabla. Use un objeto TableProperties para establecer las propiedades de toda una tabla en un documento WordprocessingML.

Clase TableGrid

La clase TableGrid del SDK de Open XML representa el elemento (<tblGrid>) definido en el esquema de formato de archivo Open XML para documentos WordprocessingML. Junto con los elementos secundarios de la columna de cuadrícula (<gridCol>), el <elemento tblGrid> define las columnas de una tabla y especifica el ancho predeterminado de las celdas de tabla en las columnas. Use un objeto TableGrid para definir las columnas de una tabla en un documento WordprocessingML.

Clase GridColumn

La clase GridColumn del SDK de Open XML representa el elemento grid column (<gridCol>) definido en el esquema de formato de archivo Open XML para documentos WordprocessingML. El <elemento gridCol> es un elemento secundario del <elemento tblGrid> y define una sola columna en una tabla de un documento WordprocessingML. Use la clase GridColumn para manipular una columna individual en un documento WordprocessingML.

Clase TableRow

La clase TableRow del SDK de Open XML representa el elemento de fila de tabla (<tr>) definido en el esquema de formato de archivo Open XML para documentos WordprocessingML. El <elemento tr> define una fila de una tabla en un documento WordprocessingML, de forma análoga a la <etiqueta tr> en HTML. Una fila de tabla también puede tener formato aplicado mediante un elemento de propiedades de fila de tabla (<trPr>). La clase TableRowProperties del SDK de Open XML representa el <elemento trPr> .

Clase TableCell

La clase TableCell del SDK de Open XML representa el elemento de celda de tabla (<tc>) definido en el esquema de formato de archivo Open XML para documentos WordprocessingML. El <elemento tc> define una celda de una tabla en un documento WordprocessingML, de forma análoga a la <etiqueta td> en HTML. Una celda de tabla también puede tener formato aplicado mediante un elemento de propiedades de celda de tabla (<tcPr>). La clase TableCellProperties del SDK de Open XML representa el <elemento tcPr> .

Ejemplo de código del SDK de Open XML

Mediante el siguiente código se inserta una tabla con una fila y tres columnas en un documento.

public static void 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.
        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);
    }
}
Public Sub InsertTableInDoc(ByVal filepath As String)
    ' Open a WordprocessingDocument for editing using the filepath.
    Using wordprocessingDocument As WordprocessingDocument = _
        WordprocessingDocument.Open(filepath, True)
        ' Assign a reference to the existing document body.
        Dim body As Body = wordprocessingDocument.MainDocumentPart.Document.Body

        ' Create a table.
        Dim tbl As New Table()

        ' Set the style and width for the table.
        Dim tableProp As New TableProperties()
        Dim tableStyle As New TableStyle() With {.Val = "TableGrid"}

        ' Make the table width 100% of the page width.
        Dim tableWidth As New TableWidth() With {.Width = "5000", .Type = TableWidthUnitValues.Pct}

        ' Apply
        tableProp.Append(tableStyle, tableWidth)
        tbl.AppendChild(tableProp)

        ' Add 3 columns to the table.
        Dim tg As New TableGrid(New GridColumn(), New GridColumn(), New GridColumn())
        tbl.AppendChild(tg)

        ' Create 1 row to the table.
        Dim tr1 As New TableRow()

        ' Add a cell to each column in the row.
        Dim tc1 As New TableCell(New Paragraph(New Run(New Text("1"))))
        Dim tc2 As New TableCell(New Paragraph(New Run(New Text("2"))))
        Dim tc3 As 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)
    End Using
End Sub

Cuando se ejecuta este código, se escribe el siguiente XML en el documento WordprocessingML especificado en el 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>

Vea también