У меня есть файл шаблона MS Word, который я открываю, изменяю новыми данными из различных источников и затем сохраняю как новый файл.У меня есть несколько таблиц в шаблонном документе, которые имеют соответствующий стиль, включая центрированный текст внутри ячеек таблицы.
Имея некоторое представление о модуле python-docx, я могу легко изменять данные таблицы, назначая новыезначения до cell.text
.Однако всякий раз, когда я присваиваю cell.text
новое значение, новые данные больше не центрируются, а выровнены по левому краю.
Я просмотрел несколько похожих вопросов, но все ответы, похоже, связаны с изменением объектов абзаца. Этот пост был полезен и предоставил быстрый POC, но также не касается cells
, но вместо этого добавляет paragraphs
в таблицы.Однако было полезно увидеть, что paragraph
объекты имеют атрибут alignment
.
# Example table
table = doc.add_table(rows=0, cols=2)
row = table.add_row().cells
p=row[0].add_paragraph('center justified text')
p.alignment = WD_ALIGN_PARAGRAPH.CENTER
p.alignment
>>> 1
В моем текущем случае я заметил, что cells
не имеет атрибута alignment
.Затем я попытался изменить объекты абзаца, но ничего не изменилось.
from docx import Document
from docx.enum.text import WD_ALIGN_PARAGRAPH
doc = Document(BASE_DOC)
# test table, row, and cell
table = doc.tables[1]
row = table.rows[4]
cells = row.cells
cells[0].alignment
>>> AttributeError: '_Cell' object has no attribute 'alignment'
# attempt to modify paragraph alignment in table cells
for col in table.columns:
for cell in col.cells:
for par in cell.paragraphs:
par.alignment = WD_ALIGN_PARAGRAPH.CENTER
doc.save(NEW_DOC)