Высота строки таблицы Python Docx - PullRequest
0 голосов
/ 07 ноября 2018

Таким образом, ширина столбца выполняется с использованием ширины ячейки для всех ячеек в одном столбце, например:

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,6 см.

Существует способ доступа к абзацам без использования add_paragraph, кто-нибудь знает, как получить доступ к строкам без использования метода add_row, потому что это было то, что я использовал для установки высоты строки в таблице по умолчанию.

Я пробовал это, но это не работает:

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

но это не дает ошибки, но также не влияет на высоту.

Ответы [ 2 ]

0 голосов
/ 08 ноября 2018

Некоторая дополнительная информация: Ответ здесь правильный, но это даст минимальную высоту строки. Использование 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

0 голосов
/ 08 ноября 2018

table.rows - это коллекция, в частности последовательность, поэтому вам нужно получить доступ к каждой строке отдельно:

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

Также проверьте row.height_rule о некоторых связанных поведениях, к которым у вас есть доступ:
https://python -docx.readthedocs.io / о / последний / API / table.html # строка-объекты

Когда вы присваиваете table.rows.height, он просто добавляет .height атрибут экземпляра, который ничего не делает. Это один из побочных эффектов динамического языка, такого как Python, что вы сталкиваетесь с таинственным поведением, подобным этому. Это уходит, когда вы приобретаете больше опыта, по крайней мере, для меня:)

...