当前位置: 代码网 > it编程>前端脚本>Python > python在word中插入目录和更新目录实现方式

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

2025年12月15日 Python 我要评论
1、插入目录需要用到对象:tablesofcontents目录的集合对象是tablesofcontents,单个的对象是tableofcontents。这两个词看起来差不多,差别只在table的复数和

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开始的。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com