Python Docx - как нумеровать заголовки? - PullRequest
0 голосов
/ 20 декабря 2018

Существует хороший пример для Python Docx.

Я использовал несколько document.add_heading('xxx', level=Y) и могу видеть, когда я открываю сгенерированный документ в MS Word, что уровни правильные.

Что я не вижу, так это нумерацию, такую ​​как 1, 1.1, 1.1.1 и т. Д. Я просто вижу текст заголовка.

Как я могу отображать номера заголовков, используя Docx?

Ответы [ 2 ]

0 голосов
/ 14 января 2019

этот ответ действительно поможет вам

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

paragraph = document.add_paragraph()
paragraph.style = document.styles['Heading 4']

, затем у вас будет xml слово, подобное этому

<w:pPr>
<w:pStyle w:val="4"/>
</w:pPr>

тогда вы можете получить доступ к xml word свойству "pStyle" и изменить его, используя код

header._p.pPr.pStyle.set(qn('w:val'), u'4FDD')

final, файл открытого слова, вы получите то, что вы хотите !!!

0 голосов
/ 22 декабря 2018

Буквенно-цифровые префиксы заголовков создаются автоматически в зависимости от стиля контура и уровня заголовка.Установите стиль контура и вставьте правильный уровень, и вы получите нумерацию.

Стиль нумерации еще не реализован.Из документации: класс объектов _NumberingStyle docx.styles.style._NumberingStyle [источник] Стиль нумерации.Еще не реализовано.

Однако, если установлены заголовки (например, para.style = document.styles ['Heading 1']), тогда по умолчанию должен использоваться стиль скрытой нумерации этого заголовка.

...