Crear tabla en Word usando C# | Crear tablas anidadas en C#

Las tablas en un documento de Word son una herramienta poderosa para organizar y presentar datos en un formato claro y estructurado. Una tabla consta de filas y columnas, que se cruzan para formar celdas que pueden contener texto, números, imágenes u otros elementos. En este artículo, aprenderemos cómo crear una tabla en documentos de Word mediante programación usando C#. Este artículo muestra varios métodos para crear tablas en un archivo DOCX respaldado por ejemplos de código.

Este artículo cubre los siguientes temas:

Biblioteca C# para crear tablas en documentos de Word

Para trabajar con tablas en documentos de Word, usaremos la biblioteca Aspose.Words for .NET. Es una biblioteca sólida que le permite crear y manipular dinámicamente documentos de Word mediante programación directamente dentro de aplicaciones .NET.

Por favor descargue la DLL o instálela desde NuGet usando el siguiente comando:

PM> Install-Package Aspose.Words

Crear una tabla en un documento de Word en C#

Hay dos formas de crear tablas en documentos de Word usando Aspose.Words for .NET:

  • Usando la clase DocumentBuilder
  • Usando el DOM (modelo de objetos de documento)

Podrás elegir el método que mejor se ajuste a tus necesidades. Entonces, exploremos cada uno de estos métodos en detalle.

Crear una tabla usando DocumentBuilder

La clase DocumentBuilder permite la creación eficiente y sin esfuerzo de documentos dinámicos desde cero o la modificación de los existentes. Con su amplia gama de funciones, podemos insertar sin problemas diversos elementos de contenido, incluidos texto, casillas de verificación, objetos OLE, párrafos, listas, tablas, imágenes y muchos más.

Siga los pasos a continuación para crear una tabla en un documento de Word usando la clase DocumentBuilder.

  1. Crea un objeto de la clase Document.
  2. Crea un objeto de la clase DocumentBuilder.
  3. Cree una nueva tabla usando el método StartTable().
  4. Inserte una celda usando el método InsertCell().
  5. Inserte texto en la celda usando el método Write().
  6. Repita la inserción de celdas y texto en las celdas según sea necesario.
  7. Finalice una fila usando el método EndRow().
  8. Finalice la tabla usando el método EndTable().
  9. Finalmente, guarde el documento de Word usando el método Save().

El siguiente ejemplo de código muestra cómo crear una tabla en un documento de Word usando C#.

// Este ejemplo de código demuestra cómo crear una tabla en un documento de Word usando C#
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

// Empiece a construir la mesa.
builder.StartTable();
builder.InsertCell();
builder.Write("Row 1, Cell 1 Content.");

// Construye la segunda celda.
builder.InsertCell();
builder.Write("Row 1, Cell 2 Content.");

// Llame al siguiente método para finalizar la fila y comenzar una nueva fila.
builder.EndRow();

// Construye la primera celda de la segunda fila.
builder.InsertCell();
builder.Write("Row 2, Cell 1 Content");

// Construye la segunda celda.
builder.InsertCell();
builder.Write("Row 2, Cell 2 Content.");
builder.EndRow();

// Señala que hemos terminado de construir la mesa.
builder.EndTable();

doc.Save("CreateSimpleTable.docx");
Crear una tabla en Word usando DocumentBuilder

Crear una tabla usando DocumentBuilder

Crear una tabla usando el modelo de objetos de documento (DOM)

El modelo de objetos de documento (DOM) es una representación en memoria de un documento de Word. Permite el acceso programático para leer, manipular y modificar el contenido y el formato de un documento de Word.

Siga los pasos a continuación para crear una tabla en un documento de Word usando DOM.

  1. Crea un objeto de la clase Document.
  2. Cree una nueva tabla usando la clase Table().
  3. Agregue una tabla al cuerpo del documento usando el método AppendChild().
  4. Cree un objeto de la clase Row e insértelo en la tabla usando el método Table.AppendChild(Row).
  5. Cree un objeto de la clase Celda, establezca opciones de formato y agregue texto a la celda.
  6. Inserte la celda en la fila usando el método Row.AppendChild(Cell).
  7. Después de eso, repite el proceso para tantas filas como quieras.
  8. Finalmente, guarde el documento de Word usando el método Save().

El siguiente ejemplo de código muestra cómo crear una tabla en un documento de Word usando C#.

// Este ejemplo de código demuestra cómo crear una tabla en un documento de Word usando DOM en C#
Document doc = new Document();

// Empezamos creando el objeto tabla. Tenga en cuenta que debemos pasar el objeto del documento.
// al constructor de cada nodo. Esto se debe a que cada nodo que creemos debe pertenecer
// a algún documento.
Table table = new Table(doc);
doc.FirstSection.Body.AppendChild(table);

// Aquí podríamos llamar a GuaranteeMinimum para crear las filas y celdas por nosotros. Este método se utiliza
// para garantizar que el nodo especificado sea válido. En este caso, una tabla válida debe tener al menos una fila y una celda.

// En su lugar, nos encargaremos de crear la fila y la tabla nosotros mismos.
// Esta sería la mejor manera de hacerlo si estuviéramos creando una tabla dentro de un algoritmo.
Row row = new Row(doc);
row.RowFormat.AllowBreakAcrossPages = true;
table.AppendChild(row);

// Ahora podemos aplicar cualquier configuración de ajuste automático.
table.AutoFit(AutoFitBehavior.FixedColumnWidths);

Cell cell = new Cell(doc);
cell.CellFormat.Shading.BackgroundPatternColor = Color.LightBlue;
cell.CellFormat.Width = 80;
cell.AppendChild(new Paragraph(doc));
cell.FirstParagraph.AppendChild(new Run(doc, "Row 1, Cell 1 Text"));

// Agregar una celda
row.AppendChild(cell);

// Luego repetiríamos el proceso para las otras celdas y filas de la tabla.
// También podemos acelerar las cosas clonando celdas y filas existentes.
row.AppendChild(cell.Clone(false));
row.LastCell.AppendChild(new Paragraph(doc));
row.LastCell.FirstParagraph.AppendChild(new Run(doc, "Row 1, Cell 2 Text"));

// guardar el documento
doc.Save("InsertTableDirectly.docx");
Crear una tabla usando el modelo de objetos de documento (DOM)

Crear una tabla usando el modelo de objetos de documento (DOM)

Cree una tabla anidada en un documento de Word usando C#

También podemos crear una nueva tabla dentro de una celda de la tabla. Los siguientes son los pasos para crear una tabla anidada en un documento de Word.

  1. Crea un objeto de la clase Document.
  2. Crea un objeto de la clase DocumentBuilder.
  3. Cree una tabla usando el método StartTable() y obtenga una referencia a la tabla en un objeto.
  4. Inserte una celda usando el método InsertCell() y obtenga una referencia a la celda en un objeto.
  5. Inserte texto en una celda usando el método DocumentBuilder.Write().
  6. Repita la inserción de celdas y texto en las celdas según sea necesario.
  7. Finalice la tabla cuando haya insertado todas las filas.
  8. Mueva el control dentro de la celda deseada usando el método MoveTo(cell.FirstParagraph).
  9. Cree otra tabla insertando celdas y finalice la tabla cuando haya terminado.
  10. Finalmente, guarde el documento de Word usando el método Save().

El siguiente ejemplo de código muestra cómo crear una tabla anidada en un documento de Word usando C#.

// Este ejemplo de código demuestra cómo crear una tabla anidada en un documento de Word usando C#
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

Cell cell = builder.InsertCell();
builder.Writeln("Outer Table Cell 1");

builder.InsertCell();
builder.Writeln("Outer Table Cell 2");

// Esta llamada es importante para crear una tabla anidada dentro de la primera tabla. 
// Sin esta llamada, las celdas insertadas a continuación se agregarán a la tabla exterior.
builder.EndTable();

// Vaya a la primera celda de la tabla exterior.
builder.MoveTo(cell.FirstParagraph);

// Construye la mesa interior.
builder.InsertCell();
builder.Writeln("Inner Table Cell 1");
builder.InsertCell();
builder.Writeln("Inner Table Cell 2");
builder.EndTable();

// guardar el documento
doc.Save("NestedTable.docx");
Cree una tabla anidada en un documento de Word usando C#

Cree una tabla anidada en un documento de Word usando C#

Clonar una tabla existente en un documento de Word en C#

Podemos clonar una tabla existente en un documento de Word siguiendo los pasos a continuación:

  1. Cargue un documento existente con una tabla usando la clase Document.
  2. Obtenga la tabla en un objeto usando el método GetChild(NodeType.TABLE, int, boolean).
  3. Clona una tabla usando el método Table.Clone(True).
  4. Inserte una tabla clonada usando el método Table.ParentNode.InsertAfter().
  5. Inserte un párrafo vacío entre tablas usando el método Table.ParentNode.InsertAfter(new Paragraph(Document), Table).
  6. Finalmente, guarde el documento de Word usando el método Save().

El siguiente ejemplo de código muestra cómo clonar una tabla en un documento de Word usando C#.

// Este ejemplo de código demuestra cómo clonar una tabla existente en un documento de Word usando C#
Document doc = new Document("Tables.docx");

Table table = (Table) doc.GetChild(NodeType.Table, 0, true);

// Clona la tabla e insértala en el documento después del original.
Table tableClone = (Table) table.Clone(true);
table.ParentNode.InsertAfter(tableClone, table);

// Inserte un párrafo vacío entre las dos tablas,
// o sino se combinarán en uno solo al guardar esto tiene que ver con la validación del documento.
table.ParentNode.InsertAfter(new Paragraph(doc), table);
            
doc.Save("CloneCompleteTable.docx");
Clonar una tabla existente en un documento de Word en C#

Clonar una tabla existente en un documento de Word en C#

Crear una tabla en un documento de Word desde HTML

También podemos crear una tabla en un documento de Word usando una cadena HTML siguiendo los pasos a continuación:

  1. Crea un objeto de la clase Document.
  2. Crea un objeto de la clase DocumentBuilder.
  3. Inserte la cadena HTML de la tabla en el documento usando el método DocumentBuilder.InsertHtml(String).
  4. Finalmente, guarde el documento usando el método Document.Save().

El siguiente ejemplo de código muestra cómo insertar una tabla HTML en un documento de Word usando C#.

// Este ejemplo de código demuestra cómo insertar una tabla HTML en un documento de Word usando C#
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

// Tenga en cuenta que AutoFitSettings no se aplica a tablas insertadas desde HTML.
builder.InsertHtml("<table>" +
                   "<tr>" +
                   "<td>Row 1, Cell 1</td>" +
                   "<td>Row 1, Cell 2</td>" +
                   "</tr>" +
                   "<tr>" +
                   "<td>Row 2, Cell 2</td>" +
                   "<td>Row 2, Cell 2</td>" +
                   "</tr>" +
                   "</table>");

doc.Save("InsertTableFromHtml.docx");
Crear una tabla en un documento de Word desde HTML

Crear una tabla en un documento de Word desde HTML

Obtenga una licencia API gratuita

Puede obtener una licencia temporal para usar Aspose.Words for .NET sin limitaciones de evaluación.

Conclusión

En este artículo, hemos aprendido cómo crear tablas en documentos de Word usando C#. Hemos explorado varios métodos para crear tablas mediante programación usando C#. También hemos visto cómo crear tablas anidadas o clonar las tablas existentes en documentos de Word de forma dinámica. Además, puede obtener más información y explorar otras funciones de la biblioteca utilizando la documentación. En caso de cualquier ambigüedad, no dude en contactarnos en nuestro foro de soporte gratuito.

Ver también