如何在没有 "paragraph" 对象的情况下更改 MS Word table 中单元格文本的对齐方式
How to change alignment of cell text in MS Word table without "paragraph" object
我有一个 MS Word "template" 文件,我正在打开它,使用来自不同来源的新数据进行修改,然后另存为一个新文件。我在模板文档中有多个 table 样式适当,包括 table 单元格内的居中文本。
通过对 python-docx 模块的一些熟悉,我可以通过为 cell.text
分配新值来轻松更改 table 的数据。但是,每当我分配 cell.text
一个新值时,新数据不再居中,而是左对齐。
我浏览了几个类似的问题,但所有答案似乎都涉及修改段落对象。 post 很有帮助并提供了一个快速的 POC,但也没有处理 cells
,而是将 paragraphs
添加到 table。但是,看到 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)
分配给 _Cell.text
是一种将单元格的内容设置为已知状态的方便而紧凑的方法。为此,_Cell.text
从单元格中删除 所有 内容,然后添加一个包含单个 运行 的段落,其中包含您指定的文本。
因为 运行 和段落格式是 运行 或它格式化的段落的 部分 ,所以所有 运行 格式和所有段落格式都会消失当您分配给 _Cell.text
时。这是 "setting to known state" 位的一部分。
如果在 分配给 _Cell.text
之后应用段落居中 ,您会在输出中看到它。
或者,您可以避免分配给 _Cell.text
并自行导航现有段落和 运行。
我有一个 MS Word "template" 文件,我正在打开它,使用来自不同来源的新数据进行修改,然后另存为一个新文件。我在模板文档中有多个 table 样式适当,包括 table 单元格内的居中文本。
通过对 python-docx 模块的一些熟悉,我可以通过为 cell.text
分配新值来轻松更改 table 的数据。但是,每当我分配 cell.text
一个新值时,新数据不再居中,而是左对齐。
我浏览了几个类似的问题,但所有答案似乎都涉及修改段落对象。 cells
,而是将 paragraphs
添加到 table。但是,看到 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)
分配给 _Cell.text
是一种将单元格的内容设置为已知状态的方便而紧凑的方法。为此,_Cell.text
从单元格中删除 所有 内容,然后添加一个包含单个 运行 的段落,其中包含您指定的文本。
因为 运行 和段落格式是 运行 或它格式化的段落的 部分 ,所以所有 运行 格式和所有段落格式都会消失当您分配给 _Cell.text
时。这是 "setting to known state" 位的一部分。
如果在 分配给 _Cell.text
之后应用段落居中 ,您会在输出中看到它。
或者,您可以避免分配给 _Cell.text
并自行导航现有段落和 运行。