Python-docx - центрирует содержимое ячейки в существующей таблице после добавления значений - PullRequest
0 голосов
/ 25 июня 2018

У меня есть шаблон .docx с пустой таблицей, куда я добавляю значения:

def manipulate_table():

table = doc.tables[0]

table.cell(0, 0).text = 'A'
table.cell(0, 1).text = 'B'
table.cell(0, 2).text = 'C'
table.cell(0, 3).text = 'D'

После добавления этих значений атрибут таблицы «Центрированный» исчезает, что является стандартным поведением.

Как мне перебрать таблицу и снова центрировать все значения?Я уже гуглил, но ничего полезного не нашел.Например: не работает:

for cell in ....????:
    tc = cell._tc
    tcPr = tc.get_or_add_tcPr()
    tcVAlign = OxmlElement('w:vAlign')
    tcVAlign.set(qn('w:val'), "center")
    tcPr.append(tcVAlign)

Я ценю вашу помощь.

1 Ответ

0 голосов
/ 25 июня 2018

Свойство .text в ячейке полностью заменяет текст в ячейке, включая абзацы, которые были там ранее.

Атрибут «по центру» находится в каждом абзаце, а не в ячейке. Так что вам нужно сделать что-то вроде:

from docx.enum.text import WD_ALIGN_PARAGRAPH
cell.paragraphs[0].alignment = WD_ALIGN_PARAGRAPH.CENTER

для каждого из "новых" абзацев (при присвоении .text у вас останется ровно один в каждой ячейке).

...