Python-docx-添加值后将单元格内容置于现有表的中心

时间:2018-06-25 14:38:51

标签: docx python-docx

我有一个带有空表的.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'

添加这些值后,表属性“居中”消失了,这是标准行为。

如何遍历表并再次将所有值居中?我已经用Google搜索,但没有发现任何帮助。例如:不起作用:

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 :(得分:3)

一个单元格上的.text属性完全替换了该单元格中的文本,包括之前的段落。

“居中”属性在每个段落上,而不在单元格上。因此,您需要执行以下操作:

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

进入每个“新”段落(分配给.text将使每个单元格中只有一个)。