criar tabelas em documentos do word usando python

As tabelas são comumente usadas em documentos do Word para organizar informações em uma estrutura semelhante a uma grade. Eles permitem resumir as informações na forma de linhas e colunas. Neste artigo, você aprenderá como criar uma tabela em documentos do Word programaticamente usando Python. Além disso, o artigo abordará como criar tabelas aninhadas ou clonar uma tabela existente em documentos do Word.

Biblioteca Python para criar tabelas em documentos do Word

Para trabalhar com tabelas em documentos do Word, usaremos Aspose.Words for Python. A biblioteca foi projetada para criar e manipular documentos do Word dinamicamente de dentro dos aplicativos Python. Você pode instalar a biblioteca de PyPI usando o seguinte comando pip.

pip install aspose-words

Criar uma tabela em um documento do Word em Python

A seguir estão as etapas para criar uma tabela em um documento Word DOCX usando Python.

  • Crie um objeto da classe Document.
  • Crie um objeto da classe DocumentBuilder.
  • Inicie uma tabela usando o método DocumentBuilder.starttable() e obtenha a referência da tabela em um objeto.
  • Insira uma célula usando o método DocumentBuilder.insertcell().
  • Defina a formatação da célula usando a propriedade DocumentBuilder.cellformat.
  • Defina o ajuste automático usando o método autofit(aw.tables.AutoFitBehavior.FIXEDCOLUMNWIDTHS).
  • Defina o alinhamento da célula.
  • Insira texto na célula usando o método DocumentBuilder.write().
  • Repita a inserção de células e texto nas células conforme necessário.
  • Encerre uma linha ao concluir a inserção de células.
  • Finalize a tabela quando tiver inserido todas as linhas.
  • Salve o documento do Word usando o método Document.save().

O exemplo de código a seguir mostra como criar uma tabela em 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")

A seguir está a captura de tela da tabela que criamos usando o exemplo de código acima.

Table in a Word DOCX Document

Table in a Word DOCX Document

Criar uma tabela aninhada em um documento do Word em Python

Aspose.Words for Python também permite que você crie uma tabela aninhada de forma transparente. Em outras palavras, você pode criar uma nova tabela dentro de uma célula da tabela. A seguir estão as etapas para criar uma tabela aninhada em um arquivo DOCX do Word.

  • Crie um objeto da classe Document.
  • Crie um objeto da classe DocumentBuilder.
  • Inicie uma tabela usando o método DocumentBuilder.starttable() e obtenha a referência da tabela em um objeto.
  • Insira uma célula usando o método DocumentBuilder.insertcell() e obtenha a referência da célula em um objeto.
  • Insira texto na célula usando o método DocumentBuilder.write().
  • Repita a inserção de células e texto nas células conforme necessário.
  • Finalize a tabela quando tiver inserido todas as linhas.
  • Mova o controle dentro da célula desejada usando o método DocumentBuilder.moveto(Cell.firstparagraph).
  • Crie outra tabela inserindo células e termine a tabela quando terminar.
  • Salve o documento do Word usando o método Document.save().

O exemplo de código a seguir mostra como criar uma tabela aninhada em um 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")

A seguir está a saída do exemplo de código acima.

Nested Table in a Word Document

Nested Table in a Word Document

Clonar uma tabela existente em um documento do Word em Python

Você também pode clonar uma tabela existente em um documento do Word. A seguir estão as etapas para realizar esta operação.

  • Carregue o documento usando a classe Document.
  • Obtenha a referência da tabela em um objeto usando o método Document.getchild(NodeType.TABLE, int, boolean).astable().
  • Chame o método clone(True).astable() usando o objeto da tabela e obtenha a referência da tabela clonada em outro objeto.
  • Insira a tabela clonada usando o método Table.parentnode.insertafter().
  • Insira um parágrafo vazio entre as tabelas usando o método Table.parentnode.insertafter(Paragraph(Document), Table).
  • Salve o documento do Word usando o método Document.save().

O exemplo de código a seguir mostra como clonar uma tabela em um documento do Word DOCX 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")

A captura de tela a seguir mostra a tabela clonada em um documento do Word.

Cloned Table in a Word Document

Cloned Table in a Word Document

Obtenha uma licença de API gratuita

Você pode obter uma licença temporária para usar o Aspose.Words for Python sem limitações de avaliação.

Conclusão

Neste artigo, você aprendeu como criar tabelas em documentos do Word usando Python. Além disso, você viu como criar tabelas aninhadas ou clonar as tabelas existentes em documentos do Word dinamicamente. Além disso, você pode visitar a documentação do Aspose.Words for Python para explorar outros recursos. Em caso de dúvidas, sinta-se à vontade para nos informar através do nosso fórum.

Veja também

Informações: Se você precisar obter um documento do Word de uma apresentação do PowerPoint, poderá usar o conversor Aspose Apresentação para documento do Word.