python在word中插入目录和更新目录实现方式

 更新时间:2025年12月15日 15:08:51   作者:flashman911  
文章主要介绍了如何在Word文档中插入和更新目录,并提供了具体的代码示例,插入目录时,需要使用`TablesOfContents`对象,并设置使用默认样式、超链接和显示的最低层级,更新目录时,可以使用全部更新或只更新页码的方法

1、插入目录

需要用到对象:TablesOfContents

目录的集合对象是TablesOfContents,单个的对象是TableOfContents。这两个词看起来差不多,差别只在table的复数和单数的区别,当时看了很久才看出差别。

现在创建一个空白的文档,在文档中添加一级标题和二级标题,最后在文档最前面,插入生成的目录。

示例代码:

import win32com.client as win32
from win32com.client import constants

doc_app = win32.gencache.EnsureDispatch('Word.Application')
doc_app.Visible =1 #不设置的话,看不到应用程序界面
doc = doc_app.Documents.Add()

#添加标题1
##添加文字
parag = doc.Paragraphs.Add()
parag_range = parag.Range
parag_range.Text ='一级标题'
###设置样式
parag_range.Style = doc.Styles("标题 1")#Heading 1 是样式的名称

border = parag.Borders(constants.wdBorderBottom)
border.LineStyle = constants.wdLineStyleSingle
border.LineWidth = constants.wdLineWidth225pt

#添加标题2
parag_range.InsertParagraphAfter()#在当前位置之后,新插入一行
parag_range = parag.Range
parag_range.Text ='二级标题'
parag_range.Style = doc.Styles("标题 2")#二级标题
##添加正文
parag_range.InsertParagraphAfter()
parag_range = parag.Range
parag_range.Text ='正文'
parag_range.Style = doc.Styles("正文")#正文
##插入目录

doc.Paragraphs(1).Range.InsertParagraphBefore()#在首行之前插入一行,用于插入目录
parag_range = doc.Paragraphs(1).Range#指向新插入的行
#插入目录
##从当前指向的位置插入目录,使用默认样式设置目录样式,包含3级标题
doc.TablesOfContents.Add(Range=parag_range, UseHeadingStyles=True,LowerHeadingLevel=3, UseHyperlinks=True)

上述代码中,除了最后一行,其他的都是在填充word的内容。真正插入代码的功能,只有最后一行代码。

  • UseHeadingStyles:设置使用默认的style
  • UseHyperlinks:设置为Ture,则目录自带超链接。默认是False。
  • LowerHeadingLevel:设置目录显示的最低层级。通常UpperHeadingLevel不用设置。

生成效果:

对于文章中的段落的格式,例如间距、字体都可以通过手动设置在一个空白的word文档。

这个文档作为模板,自动生成的内容,可以直接使用其样式,这样效率更高。

2、更新目录

日常工作中经常还会遇到需要更新目录。

可以使用2种更新方法:全部更新(Update)和只更新页码(UpdatePageNumbers)

 只更新页码的示例代码:

for toc in doc.TablesOfContents: #遍历所有的目录对象
	toc.UpdatePageNumbers() # 更新页码

示例中,是遍历所有的目录对象。

如果需要针对特定的目录更新,可以使用doc.TablesOfContents(1)来制定首个目录,注意括号中的数字是从1开始的。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • python二分法查找函数底值

    python二分法查找函数底值

    大家好,本篇文章主要讲的是python二分法查找函数底值,感兴趣的同学赶快来看一看吧,对你有用的话记得收藏一下,方便下次浏览
    2021-12-12
  • 玩转python爬虫之爬取糗事百科段子

    玩转python爬虫之爬取糗事百科段子

    这篇文章主要介绍了python爬虫爬取糗事百科段子,详细介绍下,如何来抓取到糗事百科里面的指定内容,感兴趣的小伙伴们可以参考一下
    2016-02-02
  • Python程序编译与反编译问题

    Python程序编译与反编译问题

    这篇文章主要介绍了Python程序编译与反编译问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • 在Python中将函数作为另一个函数的参数传入并调用的方法

    在Python中将函数作为另一个函数的参数传入并调用的方法

    今天小编就为大家分享一篇在Python中将函数作为另一个函数的参数传入并调用的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • 基于Python正确读取资源文件

    基于Python正确读取资源文件

    这篇文章主要介绍了基于Python正确读取资源文件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • Django 事务transaction.atomic()的使用方法

    Django 事务transaction.atomic()的使用方法

    本文主要介绍了Django 事务transaction.atomic()的使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-12-12
  • LeetCode百钱买百鸡python递归解法示例

    LeetCode百钱买百鸡python递归解法示例

    这篇文章主要为大家介绍了LeetCode百钱买百鸡题目python递归解法示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11
  • OpenClaw集成Elasticsearch实现智能数据操作与分析

    OpenClaw集成Elasticsearch实现智能数据操作与分析

    OpenClaw是一个强大的数据操作框架,结合Elasticsearch的搜索和分析能力,可以构建高效的数据处理管道,以下是实现这一集成的详细方案.
    2026-03-03
  • python网络爬虫采集联想词示例

    python网络爬虫采集联想词示例

    这篇文章主要介绍了python网络爬虫采集联想词示例,需要的朋友可以参考下
    2014-02-02
  • Python数据分析从入门到进阶之分类算法全面教程

    Python数据分析从入门到进阶之分类算法全面教程

    数据分析是处理和解释数据以发现有用信息和洞察的过程,其中,分类算法是数据分析领域的一个重要组成部分,它用于将数据分为不同的类别或组,本文将介绍分类算法的基本概念和进阶技巧,以及如何在Python中应用这些算法,包括示例代码和实际案例
    2023-11-11

最新评论