Python Docx表行高

时间:2018-11-07 17:29:10

标签: python-3.x python-docx 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)

但是尽管这不会产生错误,但对高度也没有影响。

2 个答案:

答案 0 :(得分:1)

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之类的动态语言的副作用,您遇到这样的神秘行为。但是随着您获得更多经验,它消失了,至少对我来说是这样的:)

答案 1 :(得分:0)

一些其他信息: 答案是正确的,但这将给出最小的行高。使用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