crear tablas en documentos de word usando python

Las tablas se usan comúnmente en documentos de Word para organizar información en una estructura similar a una cuadrícula. Le permiten resumir la información en forma de filas y columnas. En este artículo, aprenderá cómo crear una tabla en documentos de Word mediante programación usando Python. Además, el artículo cubrirá cómo crear tablas anidadas o clonar una tabla existente en documentos de Word.

Biblioteca de Python para crear tablas en documentos de Word

Para trabajar con tablas en documentos de Word, usaremos Aspose.Words for Python. La biblioteca está diseñada para crear y manipular documentos de Word dinámicamente desde las aplicaciones de Python. Puede instalar la biblioteca desde PyPI usando el siguiente comando pip.

pip install aspose-words

Crear una tabla en un documento de Word en Python

Los siguientes son los pasos para crear una tabla en un documento DOCX de Word usando Python.

  • Cree un objeto de la clase Document.
  • Crea un objeto de la clase DocumentBuilder.
  • Inicie una tabla con el método DocumentBuilder.starttable() y obtenga la referencia de la tabla en un objeto.
  • Inserte una celda usando el método DocumentBuilder.insertcell().
  • Establezca el formato de la celda mediante la propiedad DocumentBuilder.cellformat.
  • Configure el ajuste automático mediante el método autofit(aw.tables.AutoFitBehavior.FIXEDCOLUMNWIDTHS).
  • Establecer la alineación de la celda.
  • Inserte texto en la celda usando el método DocumentBuilder.write().
  • Repita la inserción de celdas y texto en las celdas según sea necesario.
  • Finalice una fila cuando termine de insertar celdas.
  • Mesa final cuando haya insertado todas las filas.
  • Guarde el documento de Word usando el método Document.save().

El siguiente ejemplo de código muestra cómo crear una tabla en documentos DOCX usando Python.

import aspose.words as aw

# Create a new Word document.
doc = aw.Document()

# Create document builder.
builder = aw.DocumentBuilder(doc)

# Start the table.
table = builder.start_table()

# Insert cell.
builder.insert_cell()

# Table wide formatting must be applied after at least one row is present in the table.
table.left_indent = 20.0

# Set height and define the height rule for the header row.
builder.row_format.height = 40.0
builder.row_format.height_rule = aw.HeightRule.AT_LEAST

# Set alignment and font settings.
builder.paragraph_format.alignment = aw.ParagraphAlignment.CENTER
builder.font.size = 16
builder.font.name = "Arial"
builder.font.bold = True

builder.cell_format.width = 100.0
builder.write("Header Row,\n Cell 1")

# We don't need to specify this cell's width because it's inherited from the previous cell.
builder.insert_cell()
builder.write("Header Row,\n Cell 2")

builder.insert_cell()
builder.cell_format.width = 200.0
builder.write("Header Row,\n Cell 3")
builder.end_row()

builder.cell_format.width = 100.0
builder.cell_format.vertical_alignment = aw.tables.CellVerticalAlignment.CENTER

# Reset height and define a different height rule for table body.
builder.row_format.height = 30.0
builder.row_format.height_rule = aw.HeightRule.AUTO
builder.insert_cell()

# Reset font formatting.
builder.font.size = 12
builder.font.bold = False

builder.write("Row 1, Cell 1 Content")
builder.insert_cell()
builder.write("Row 1, Cell 2 Content")

builder.insert_cell()
builder.cell_format.width = 200.0
builder.write("Row 1, Cell 3 Content")
builder.end_row()

builder.insert_cell()
builder.cell_format.width = 100.0
builder.write("Row 2, Cell 1 Content")

builder.insert_cell()
builder.write("Row 2, Cell 2 Content")

builder.insert_cell()
builder.cell_format.width = 200.0
builder.write("Row 2, Cell 3 Content.")
builder.end_row()

# End table.
builder.end_table()

# Save the document.
doc.save("table_formatted.docx")

La siguiente es la captura de pantalla de la tabla que hemos creado utilizando el ejemplo de código anterior.

Table in a Word DOCX Document

Crear una tabla anidada en un documento de Word en Python

Aspose.Words for Python también le permite crear una tabla anidada sin problemas. En otras palabras, puede crear una nueva tabla dentro de una celda de la tabla. Los siguientes son los pasos para crear una tabla anidada en un archivo DOCX de Word.

  • Cree un objeto de la clase Document.
  • Crea un objeto de la clase DocumentBuilder.
  • Inicie una tabla con el método DocumentBuilder.starttable() y obtenga la referencia de la tabla en un objeto.
  • Inserte una celda usando el método DocumentBuilder.insertcell() y obtenga la referencia de la celda en un objeto.
  • Inserte texto en la celda usando el método DocumentBuilder.write().
  • Repita la inserción de celdas y texto en las celdas según sea necesario.
  • Mesa final cuando haya insertado todas las filas.
  • Mueva el control dentro de la celda deseada usando el método DocumentBuilder.moveto(Cell.firstparagraph).
  • Cree otra tabla insertando celdas y finalice la tabla cuando haya terminado.
  • Guarde el documento de Word usando el método Document.save().

El siguiente ejemplo de código muestra cómo crear una tabla anidada en un documento DOCX usando Python.

import aspose.words as aw

# Create a new Word document.
doc = aw.Document()
builder = aw.DocumentBuilder(doc)

# Insert cell.
cell = builder.insert_cell()
builder.writeln("Outer Table Cell 1")

builder.insert_cell()
builder.writeln("Outer Table Cell 2")

# This call is important to create a nested table within the first table. 
# Without this call, the cells inserted below will be appended to the outer table.
builder.end_table()

# Move to the first cell of the outer table.
builder.move_to(cell.first_paragraph)

# Build the inner table.
builder.insert_cell()
builder.writeln("Inner Table Cell 1")
builder.insert_cell()
builder.writeln("Inner Table Cell 2")
builder.end_table()

# Save the document.
doc.save("table_nested.docx")

El siguiente es el resultado del ejemplo de código anterior.

Nested Table in a Word Document

Clonar una tabla existente en un documento de Word en Python

También puede clonar una tabla existente en un documento de Word. Los siguientes son los pasos para realizar esta operación.

  • Cargue el documento usando la clase Document.
  • Obtenga la referencia de la tabla en un objeto usando el método Document.getchild(NodeType.TABLE, int, boolean).astable().
  • Llame al método clone(True).astable() usando el objeto de la tabla y obtenga la referencia de la tabla clonada en otro objeto.
  • Inserte la tabla clonada usando el método Table.parentnode.insertafter().
  • Inserte un párrafo vacío entre tablas usando el método Table.parentnode.insertafter(Paragraph(Document), Table).
  • Guarde el documento de Word usando el método Document.save().

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

import aspose.words as aw

# Load the Word document.
doc = aw.Document("table_formatted.docx")

# Get reference of the desired table.
table = doc.get_child(aw.NodeType.TABLE, 0, True).as_table()

# Clone the table and insert it into the document after the original table.
tableClone = table.clone(True).as_table()
table.parent_node.insert_after(tableClone, table)

# Insert an empty paragraph between the two tables,
# or else they will be combined into one upon saving.
table.parent_node.insert_after(aw.Paragraph(doc), table)

# Save the document.
doc.save("table_clone.docx")

La siguiente captura de pantalla muestra la tabla clonada en un documento de Word.

Cloned Table in a Word Document

Obtenga una licencia de API gratuita

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

Conclusión

En este artículo, ha aprendido a crear tablas en documentos de Word utilizando Python. Además, ha visto cómo crear tablas anidadas o clonar las tablas existentes en documentos de Word de forma dinámica. Además, puede visitar la documentación de Aspose.Words for Python para explorar otras características. Si tiene alguna pregunta, no dude en hacérnosla saber a través de nuestro foro.

Ver también

Información: si alguna vez necesita obtener un documento de Word de una presentación de PowerPoint, puede usar el convertidor Aspose Presentación a documento de Word.