python在word中插入目錄和更新目錄實(shí)現(xiàn)方式
1、插入目錄
需要用到對象:TablesOfContents
目錄的集合對象是TablesOfContents,單個的對象是TableOfContents。這兩個詞看起來差不多,差別只在table的復(fù)數(shù)和單數(shù)的區(qū)別,當(dāng)時(shí)看了很久才看出差別。
現(xiàn)在創(chuàng)建一個空白的文檔,在文檔中添加一級標(biāo)題和二級標(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 ='一級標(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 ='二級標(biāo)題'
parag_range.Style = doc.Styles("標(biāo)題 2")#二級標(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級標(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è)置目錄顯示的最低層級。通常UpperHeadingLevel不用設(shè)置。
生成效果:

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

只更新頁碼的示例代碼:
for toc in doc.TablesOfContents: #遍歷所有的目錄對象 toc.UpdatePageNumbers() # 更新頁碼
示例中,是遍歷所有的目錄對象。
如果需要針對特定的目錄更新,可以使用doc.TablesOfContents(1)來制定首個目錄,注意括號中的數(shù)字是從1開始的。
總結(jié)
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
淺談對pytroch中torch.autograd.backward的思考
這篇文章主要介紹了對pytroch中torch.autograd.backward的思考,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12
Python數(shù)據(jù)分析之真實(shí)IP請求Pandas詳解
這篇文章主要給大家介紹了Python數(shù)據(jù)分析之真實(shí)IP請求Pandas,文中通過示例嗲嗎給大家介紹的很詳細(xì),相信對大家的學(xué)習(xí)或者理解具有一定的參考借鑒價(jià)值,有需要的朋友們可以參考借鑒,下面來一起學(xué)習(xí)學(xué)習(xí)吧。2016-11-11
Python中tkinter+MySQL實(shí)現(xiàn)增刪改查
這篇文章主要介紹了Python中tkinter+MySQL實(shí)現(xiàn)增刪改查,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04
Python?實(shí)現(xiàn)圖像特效中的油畫效果
這篇文章主要是為大家簡單介紹一下圖像添加油畫特效的基本原理以及代碼實(shí)現(xiàn),文中的示例代碼很詳細(xì),對我們學(xué)習(xí)或者工作有一點(diǎn)的價(jià)值,感興趣的小伙伴可以了解一下2021-12-12
Python3爬蟲ChromeDriver的安裝實(shí)例
在本篇文章里小編給大家整理的是一篇關(guān)于Python3爬蟲ChromeDriver的安裝實(shí)例內(nèi)容,有興趣的朋友們可以學(xué)習(xí)參考下。2021-02-02

