Как создать / изменить динамическое оглавление в 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 находится в стадии разработки. Таким образом, вышеприведенный способ - ваш лучший выбор. Я использую тот же метод в одном из моих проектов. Работает совершенно нормально.

Другие вопросы по тегам