создавать таблицы в документах Word с помощью python

Таблицы обычно используются в документах Word для организации информации в виде сетки. Они позволяют суммировать информацию в виде строк и столбцов. В этой статье вы узнаете, как программно создать таблицу в документах Word с помощью Python. Кроме того, в статье будет рассказано, как создавать вложенные таблицы или клонировать существующую таблицу в документах Word.

Библиотека Python для создания таблиц в документах Word

Для работы с таблицами в документах Word мы будем использовать Aspose.Words for Python. Библиотека предназначена для динамического создания документов Word и управления ими из приложений Python. Вы можете установить библиотеку из PyPI с помощью следующей команды pip.

pip install aspose-words

Создайте таблицу в документе Word на Python

Ниже приведены шаги по созданию таблицы в документе Word DOCX с использованием Python.

  • Создайте объект класса Document.
  • Создайте объект класса DocumentBuilder.
  • Запустите таблицу с помощью метода DocumentBuilder.starttable() и получите ссылку на таблицу в объекте.
  • Вставьте ячейку с помощью метода DocumentBuilder.insertcell().
  • Задайте форматирование ячейки с помощью свойства DocumentBuilder.cellformat.
  • Установите автоподгонку с помощью метода autofit(aw.tables.AutoFitBehavior.FIXEDCOLUMNWIDTHS).
  • Установить выравнивание ячейки.
  • Вставьте текст в ячейку, используя метод DocumentBuilder.write().
  • При необходимости повторите вставку ячеек и текста в ячейки.
  • Завершите строку после завершения вставки ячеек.
  • Завершите таблицу, когда вы вставите все строки.
  • Сохраните документ Word, используя метод Document.save().

В следующем примере кода показано, как создать таблицу в документах DOCX с помощью 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")

Ниже приведен скриншот таблицы, которую мы создали с помощью приведенного выше примера кода.

Table in a Word DOCX Document

Table in a Word DOCX Document

Создайте вложенную таблицу в документе Word на Python

Aspose.Words for Python также позволяет легко создавать вложенные таблицы. Другими словами, вы можете создать новую таблицу в ячейке таблицы. Ниже приведены шаги для создания вложенной таблицы в файле Word DOCX.

  • Создайте объект класса Document.
  • Создайте объект класса DocumentBuilder.
  • Запустите таблицу с помощью метода DocumentBuilder.starttable() и получите ссылку на таблицу в объекте.
  • Вставьте ячейку с помощью метода DocumentBuilder.insertcell() и получите ссылку на ячейку в объекте.
  • Вставьте текст в ячейку, используя метод DocumentBuilder.write().
  • При необходимости повторите вставку ячеек и текста в ячейки.
  • Завершите таблицу, когда вы вставите все строки.
  • Переместите элемент управления внутрь нужной ячейки с помощью метода DocumentBuilder.moveto(Cell.firstparagraph).
  • Создайте другую таблицу, вставив ячейки и завершив таблицу, когда закончите.
  • Сохраните документ Word, используя метод Document.save().

В следующем примере кода показано, как создать вложенную таблицу в документе DOCX с помощью 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")

Ниже приведен вывод приведенного выше примера кода.

Nested Table in a Word Document

Nested Table in a Word Document

Клонировать существующую таблицу в документе Word в Python

Вы также можете клонировать существующую таблицу в документе Word. Ниже приведены шаги для выполнения этой операции.

  • Загрузите документ, используя класс Document.
  • Получить ссылку на таблицу в объекте с помощью метода Document.getchild(NodeType.TABLE, int, boolean).astable().
  • Вызовите метод clone(True).astable(), используя объект таблицы, и получите ссылку на клонированную таблицу в другом объекте.
  • Вставьте клонированную таблицу, используя метод Table.parentnode.insertafter().
  • Вставьте пустой абзац между таблицами, используя метод Table.parentnode.insertafter(Paragraph(Document), Table).
  • Сохраните документ Word, используя метод Document.save().

В следующем примере кода показано, как клонировать таблицу в документе Word DOCX с помощью 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")

На следующем снимке экрана показана клонированная таблица в документе Word.

Cloned Table in a Word Document

Cloned Table in a Word Document

Получите бесплатную лицензию API

Вы можете получить временную лицензию на использование Aspose.Words for Python без ограничений на пробную версию.

Вывод

В этой статье вы узнали, как создавать таблицы в документах Word с помощью Python. Кроме того, вы видели, как динамически создавать вложенные таблицы или клонировать существующие таблицы в документах Word. Кроме того, вы можете посетить документацию Aspose.Words for Python, чтобы изучить другие функции. В случае возникновения каких-либо вопросов, не стесняйтесь, дайте нам знать через наш форум.

Смотрите также

Информация: Если вам когда-нибудь понадобится получить документ Word из презентации PowerPoint, вы можете использовать конвертер Aspose Presentation to Word Document.