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)

然而,行高是用行来完成的,但我不记得上周是怎么做的。

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

有一种方法可以在不使用add_paragraph的情况下访问段落,有人知道如何在不使用add_row方法的情况下存取行吗?因为我曾经将表中的行高设置为默认值。

我试过了,但不起作用:

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-对象

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

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

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

解决方案:add_paraggraph实际上在文本上方添加了一个空行。请使用以下内容以避免使用add_paraggraph:

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

最新更新