Python Docx Table 行高

Python Docx Table row height

所以列宽是使用一列中所有单元格的单元格宽度来完成的,就像这样:

from docx import Document
from docx.shared import Cm

file = /path/to/file/
doc = Document(file)
table = doc.add_table(4,2)
for cell in table.columns[0].cells:
    cell.width = Cm(1.85)

不过,行高是用rows做的,但是我不记得上周是怎么做的了。

现在我设法找到一种方法来引用 table 中的行,但似乎无法回到那种方式。可以使用 add_row 方法更改高度,但不能创建没有行的 table,因此最上面的行将始终是默认高度,大约 1.6cms。

有一种方法可以不使用 add_paragraph 来访问段落,有谁知道如何在不使用 add_row 方法的情况下访问行,因为我曾经在 a 中设置行高table 作为默认值。

我试过了,但没用:

row = table.rows
row.height = Cm(0.7)

不过这样虽然不报错,但对高度也没有影响。

table.rows 是一个集合,特别是一个序列,所以你需要单独访问每一行:

for row in table.rows:
    row.height = Cm(0.7)

另请查看 row.height_rule 以了解您有权访问的一些相关行为:
https://python-docx.readthedocs.io/en/latest/api/table.html#row-objects

当您分配给 table.rows.height 时,它只是添加一个不执行任何操作的 .height 实例属性。这是像 Python 这样的动态语言的副作用之一,你会遇到像这样的神秘行为。不过,随着您获得更多经验,它就会消失,至少对我来说是这样:)

一些附加信息: 这里的答案是正确的,但这将给出最小行高。使用 WD_ROW_HEIGHT_RULE.EXACTLY 会将单元格高度固定为设置的行高,而忽略单元格的内容,这可能会导致以不希望的方式裁剪文本。

para = table.cell(0,0).add_paragrph('some text')

解决方案: add_paragraph实际上是在文字上方加了一个空行。 请改用以下内容以避免使用 add_paragraph:

table.cell(0,0).paragraphs[0].text = 'some text'

或使用 add_run 可以更轻松地处理文本:

run = table.cell(0,0).paragraphs[0].add_run('some text') run.bold = True