Пустой (вновь созданный) раздел содержит пустой абзац. Этот вид Word (называемый «рассказом») должен всегда содержать хотя бы один абзац, в противном случае он недействителен и вызовет ошибку восстановления при загрузке.
Итак, вопрос в том, как избежать появления таблицы после этого абзаца.
Первый ответ, который мне нравится больше всего, - вообще избегать использования таблицы. Кажется, вы используете его только для выравнивания, а использование вкладок лучше справляется с этой задачей по нескольким причинам, одна из которых заключается в том, что это позволяет избежать небольших смещений из-за внутреннего поля ячейки таблицы.
Этот процесс описан в документации здесь:
https://python-docx.readthedocs.io/en/latest/user/hdrftr.html#adding-zoned-header-content
По сути, вы добавляете табуляцию (и) к одному существующему абзацу и используете символы табуляции, чтобы отделить ваш логотип от заголовка. Если вы используете вкладку с выравниванием по правому краю, логотип хорошо выравнивается по правому полю.
from docx.enum.text import WD_TAB_ALIGNMENT
paragraph = section.paragraphs[0]
tab_stops = paragraph.paragraph_format.tab_stops
tab_stops.add_tab_stop(Inches(6.5), WD_TAB_ALIGNMENT.RIGHT)
paragraph.text = "My Header Title\t" # ---note trailing tab char---
run = paragraph.add_run()
run.add_picture("my-logo")
Если вы действительно должны использовать таблицу, вам нужно удалить пустой абзац перед добавлением таблицы, а затем добавить его обратно:
paragraph = header.paragraphs[0]
p = paragraph._p # ---this is the paragraph XML element---
p.getparent().remove(p)
header.add_table(...)
...
header.add_paragraph()
person
scanny
schedule
10.06.2019