我正在尝试借助python-docx(https://github.com/mikemaccana/python-docx)自动创建.docx文件(WordML)。我当前的脚本通过以下循环手动创建ToC:

for chapter in myChapters:
    body.append(paragraph(chapter.text, style='ListNumber'))

有谁知道使用“内置单词” ToC功能的方法,该功能会自动添加索引并创建各个章节的段落链接?

非常感谢!

最佳答案

关键的挑战是,渲染的ToC依赖于分页才能知道每个标题要放置的页码。分页是布局引擎提供的功能,布局引擎是Word客户端中内置的非常复杂的软件。用Python编写页面布局引擎可能不是一个好主意,绝对不是我计划很快进行的项目:)

ToC由两部分组成:

  • 用于指定ToC位置以及要包含的标题级别之类的元素。
  • 实际可见的ToC内容,标题和页码以及连接它们的虚线。

  • 创建元素非常简单,而且工作量相对较小。创建实际的可见内容(至少如果要包含页码,则需要Word布局引擎)。

    这些是选项:
  • 只需添加标签和其他几位信号来告知Word需要更新ToC。首次打开文档时,将出现一个对话框,提示需要刷新链接。用户单击是,鲍勃是您的叔叔。如果用户单击“否”,则ToC标题将显示,其下方没有任何内容,并且ToC可以手动更新。
  • 添加标签,然后使用C#或Visual Basic针对Word Automation库使用Word客户端,以打开并保存文件;所有字段(包括ToC字段)都会更新。
  • 如果您拥有SharePoint实例或使用Word Automation Services可以执行的任何操作,请在服务器端执行相同的操作。
  • 在文档中创建一个AutoOpen宏,该宏在打开文档时自动运行字段更新。可能不会通过许多病毒检查程序,并且不能在公司环境中常见的锁定Windows版本上使用。

  • 这是a very nice set of screencasts by Eric White that explain all the hairy details

    10-08 18:00