python在word中插入目錄和更新目錄實(shí)現(xiàn)方式
1、插入目錄
需要用到對(duì)象:TablesOfContents
目錄的集合對(duì)象是TablesOfContents,單個(gè)的對(duì)象是TableOfContents。這兩個(gè)詞看起來(lái)差不多,差別只在table的復(fù)數(shù)和單數(shù)的區(qū)別,當(dāng)時(shí)看了很久才看出差別。
現(xiàn)在創(chuàng)建一個(gè)空白的文檔,在文檔中添加一級(jí)標(biāo)題和二級(jí)標(biāo)題,最后在文檔最前面,插入生成的目錄。
示例代碼:
import win32com.client as win32
from win32com.client import constants
doc_app = win32.gencache.EnsureDispatch('Word.Application')
doc_app.Visible =1 #不設(shè)置的話,看不到應(yīng)用程序界面
doc = doc_app.Documents.Add()
#添加標(biāo)題1
##添加文字
parag = doc.Paragraphs.Add()
parag_range = parag.Range
parag_range.Text ='一級(jí)標(biāo)題'
###設(shè)置樣式
parag_range.Style = doc.Styles("標(biāo)題 1")#Heading 1 是樣式的名稱
border = parag.Borders(constants.wdBorderBottom)
border.LineStyle = constants.wdLineStyleSingle
border.LineWidth = constants.wdLineWidth225pt
#添加標(biāo)題2
parag_range.InsertParagraphAfter()#在當(dāng)前位置之后,新插入一行
parag_range = parag.Range
parag_range.Text ='二級(jí)標(biāo)題'
parag_range.Style = doc.Styles("標(biāo)題 2")#二級(jí)標(biāo)題
##添加正文
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#指向新插入的行
#插入目錄
##從當(dāng)前指向的位置插入目錄,使用默認(rèn)樣式設(shè)置目錄樣式,包含3級(jí)標(biāo)題
doc.TablesOfContents.Add(Range=parag_range, UseHeadingStyles=True,LowerHeadingLevel=3, UseHyperlinks=True)上述代碼中,除了最后一行,其他的都是在填充word的內(nèi)容。真正插入代碼的功能,只有最后一行代碼。
UseHeadingStyles:設(shè)置使用默認(rèn)的styleUseHyperlinks:設(shè)置為Ture,則目錄自帶超鏈接。默認(rèn)是False。LowerHeadingLevel:設(shè)置目錄顯示的最低層級(jí)。通常UpperHeadingLevel不用設(shè)置。
生成效果:

對(duì)于文章中的段落的格式,例如間距、字體都可以通過手動(dòng)設(shè)置在一個(gè)空白的word文檔。
這個(gè)文檔作為模板,自動(dòng)生成的內(nèi)容,可以直接使用其樣式,這樣效率更高。
2、更新目錄
日常工作中經(jīng)常還會(huì)遇到需要更新目錄。
可以使用2種更新方法:全部更新(Update)和只更新頁(yè)碼(UpdatePageNumbers)

只更新頁(yè)碼的示例代碼:
for toc in doc.TablesOfContents: #遍歷所有的目錄對(duì)象 toc.UpdatePageNumbers() # 更新頁(yè)碼
示例中,是遍歷所有的目錄對(duì)象。
如果需要針對(duì)特定的目錄更新,可以使用doc.TablesOfContents(1)來(lái)制定首個(gè)目錄,注意括號(hào)中的數(shù)字是從1開始的。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- Python使用Python-docx庫(kù)實(shí)現(xiàn)Word文檔自動(dòng)化
- Python自動(dòng)化辦公全攻略之Excel/Word/PDF/郵件批量處理
- 使用Python開發(fā)一個(gè)Word操作助手的實(shí)戰(zhàn)指南(附源碼)
- Python自動(dòng)化提取多個(gè)Word文檔的文本
- 使用Python調(diào)整Word文檔中各個(gè)節(jié)的頁(yè)邊距
- Python實(shí)現(xiàn)將.py代碼轉(zhuǎn)換為帶語(yǔ)法高亮的Word和PDF
- Python使用Spire.Doc for Python自動(dòng)化編輯Word文檔
相關(guān)文章
在Python中將函數(shù)作為另一個(gè)函數(shù)的參數(shù)傳入并調(diào)用的方法
今天小編就為大家分享一篇在Python中將函數(shù)作為另一個(gè)函數(shù)的參數(shù)傳入并調(diào)用的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧2019-01-01
Django 事務(wù)transaction.atomic()的使用方法
本文主要介紹了Django 事務(wù)transaction.atomic()的使用方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2025-12-12
OpenClaw集成Elasticsearch實(shí)現(xiàn)智能數(shù)據(jù)操作與分析
OpenClaw是一個(gè)強(qiáng)大的數(shù)據(jù)操作框架,結(jié)合Elasticsearch的搜索和分析能力,可以構(gòu)建高效的數(shù)據(jù)處理管道,以下是實(shí)現(xiàn)這一集成的詳細(xì)方案.2026-03-03
python網(wǎng)絡(luò)爬蟲采集聯(lián)想詞示例
這篇文章主要介紹了python網(wǎng)絡(luò)爬蟲采集聯(lián)想詞示例,需要的朋友可以參考下2014-02-02
Python數(shù)據(jù)分析從入門到進(jìn)階之分類算法全面教程
數(shù)據(jù)分析是處理和解釋數(shù)據(jù)以發(fā)現(xiàn)有用信息和洞察的過程,其中,分類算法是數(shù)據(jù)分析領(lǐng)域的一個(gè)重要組成部分,它用于將數(shù)據(jù)分為不同的類別或組,本文將介紹分類算法的基本概念和進(jìn)階技巧,以及如何在Python中應(yīng)用這些算法,包括示例代碼和實(shí)際案例2023-11-11

