Как создать / изменить динамическое оглавление в MS Word с помощью Python
Все. Я пишу python
сценарий, который может взять xml
файл для генерации MS-Word
автоматически. Я использую библиотеку Python docxtpl, чтобы сделать эту работу.
Например, если мой сценарий взять xml
как это:
<?xml version="1.0" encoding="UTF-8"?>
<Test>
<egg type="Text">some normal text.</egg>
<apple type="RichText" font="Times New Roman" color="#ff00ff" bold="True">This is a very big apple.</apple>
<banana type="Inline image" width='500' height='400'>D:\Tannis\Format_Bot\image\174324.jpg</banana>
<orange type="Replace picture" target="target.jpg">D:\Tannis\Format_Bot\image\source.jpg</orange>
</test>
Тогда мой скрипт может вставить этот текст / картинку или заменить картинку в MS-Word
, На данный момент мой скрипт может обрабатывать текст / рисунок / таблицу / заголовок / нижний колонтитул.
Но я не знаю, как создать / изменить оглавление (ToC) MS-Word
, Например, мое содержание MS-word
может быть динамичным, некоторые больше, а некоторые меньше. В таком случае мой ToC должен динамически меняться.
Кажется, docxtpl не может справиться с этой работой. Я погуглил этот вопрос, но не нашел для меня хорошего решения.
Кто-нибудь может придумать какое-то решение? Используйте другие python
Библиотека это найти, я буду учиться.
Любая помощь будет признательна, спасибо!
1 ответ
В основном вы don't have to
создать / изменить оглавление. Выполните следующие шаги, и все будет в порядке:
- Вставьте фиктивное оглавление, автоматически добавляемое MS Word в ваш шаблон.
- Что это за манекен
toc
Если при щелчке правой кнопкой мыши выбрать поля обновления, будет автоматически сгенерировано оглавление. Все, что вам нужно сделать, это использовать элементы заголовка, чтобы указать, что вы создаете элемент с возможностью закладки. - После того, как вы сгенерируете документ с
docxtpl
откройте его и щелкните правой кнопкой мыши на toc, выберитеupdate fields
, - Hola! Ваше оглавление обновляется без особой боли.
docxtpl
отлично. Но перестаньте думать, что вы должны делать все, используя только docxtpl
, Пусть MS Word делает то, что лучше.
docxtpl
находится в стадии разработки. Таким образом, вышеприведенный способ - ваш лучший выбор. Я использую тот же метод в одном из моих проектов. Работает совершенно нормально.