Как создать / изменить динамическое оглавление в MS Word с помощью Python - PullRequest
0 голосов
/ 29 июня 2018

каждый. Я пишу сценарий 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 Ответ

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

В основном вы don't have to создаете / изменяете оглавление. Выполните следующие шаги, и вы будете в порядке:

  • Вставьте фиктивное оглавление, автоматически добавляемое MS Word в ваш шаблон.
  • Что делает этот манекен toc, так это то, что когда вы щелкаете правой кнопкой мыши и выбираете поля обновления, он автоматически генерирует оглавление. Все, что вам нужно сделать, это использовать элементы заголовка, чтобы указать, что вы создаете элемент с возможностью закладки.
  • После того, как вы сгенерируете документ с помощью docxtpl, откройте его и щелкните правой кнопкой мыши на toc, выберите update fields.
  • Hola! Ваше оглавление обновляется без особой боли.

docxtpl отлично. Но перестаньте думать, что вы должны делать все, используя просто docxtpl. Пусть MS Word делает то, что лучше всего.

docxtpl находится в стадии разработки. Таким образом, вышеприведенный способ - ваш лучший выбор. Я использую тот же метод в одном из моих проектов. Работает совершенно нормально.

...