Как я могу остановить python-docx от вставки возврата каретки перед текстом моей ячейки - PullRequest
0 голосов
/ 12 ноября 2018

Мне нужен абзац внутри ячейки, но я получаю случайный возврат каретки, который выталкивает текст на одну строку:

enter image description here

Мой код:

from docx import Document
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.shared import Cm


document = Document()
document.add_heading("The Heading", 1).alignment = WD_ALIGN_PARAGRAPH.CENTER

table = document.add_table(rows=0, cols=2)
table.style = 'Table Grid'
for i in range(3):
    row_cells = table.add_row().cells
    row_cells[0].text = 'row {}, col 1'.format(i)
    row_cells[0].width = Cm(3)
    row_cells[1].width = Cm(8)
    p = row_cells[1].add_paragraph()
    p.add_run('This is an example of')
    p.add_run(' some text').bold = True
    p.add_run(' in a table cell.')

document.save('test.docx')

Как я могу заставить текст ячейки выравниваться в верхней части ячейки без паразитного CR?И как я должен установить ширину ячейки 3 см и 8 см: настройка _Cell.width не соблюдается.

1 Ответ

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

Я разобрался с этим: вы получаете бесплатный абзац с каждой ячейкой, поэтому мне просто нужно добавить текстовые прогоны к этому абзацу:

p = row_cells[1].paragraphs[0]
p.add_run('This is an example of')
p.add_run(' some text').bold = True
p.add_run(' in a table cell.')

Чтобы установить ширину, мне пришлось напрямую манипулировать столбцами, а не устанавливать их по ячейкам (несмотря на этот ответ ):

table.columns[0].width = Cm(3)
table.columns[1].width = Cm(8)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...