【问题标题】:Python Docx Table row heightPython Docx 表格行高
【发布时间】:2019-04-11 04:38:25
【问题描述】:

因此,列宽是使用一列中所有单元格的单元格宽度完成的,例如:

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)

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

【问题讨论】:

    标签: python-3.x python-docx row-height


    【解决方案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 这样的动态语言的副作用之一,您会遇到这样的神秘行为。但是,随着您获得更多经验,它就会消失,至少对我而言:)

    【讨论】:

    • 感谢 Scanny,我上次就是这样做的,我还在学习 OOP,所以有时很难知道什么属于什么。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-02
      • 2015-05-28
      • 1970-01-01
      相关资源
      最近更新 更多