Python
自动化操作office
Topic:验证Python相关模块操作office功能
Author:qyan.li
Date:2022.1.3
文章目录
前言
最近,协助老师完成Python自动化操作office
的相关内容,综合整理多方资料,验证Python
模块功能,形成Python自动化办公
较为详细的一份文档,其中包含office
操作的常用Python
模块,发布出来共大家参考交流。
一、Python
自动化操作word
文档
Python
自动化操作word
文档主要介绍常用的两个模块python-docx和win32
(1) python-docx
模块
-
简介:借助于
python
操作word
文档最简单便捷的方式,word操作的基础功能均可以由python-docx
模块实现,操作速度快 -
安装:
pip install python-docx
Tips:安装次模块注意命令为pip python-docx而非pip install docx
-
使用:
-
基础功能(文档创建,保存;标题,段落添加)
def createDocument(fileName): '''python-docx实现操作word文档基础命令(包含插入各级标题) :param fileName:文件保存路径 :return: None ''' doc = Document() # 创建新文档 # 添加各级标题(level参数定义各级标题) doc.add_heading('Python自动化操作word文档',level = 0) # level = 0,1,2... # 添加正文段落(add_run方法实现段落字体内容追加,方便调后续调整格式) para1 = doc.add_paragraph() para1.add_run('This is a test file!') # 以add_run的方式追加内容,方便后续格式调整 doc.save(fileName) # 文档保存
小总结:
Document()
创建文档add_heading()
添加标题,参数level
指定标题级数add_paragraph()
添加段落,配合add_run()
使用方便后续调整格式- ```save()``文档保存
-
内容格式修改(颜色,字体,字号等等)
def changeWordStyle(fileName): '''python-docx实现操作word文档高阶命令(包含修改字体格式) :param fileName: 文件保存路径 :return: None ''' doc = Document(fileName) # 打开现有文件,以“追加”的方式写入 para2 = doc.add_paragraph() run = para2.add_run('这是一个测试文件!') # 字体设置 run.font.name = '楷体' # 设置中文字体必须添加下面代码(同时qn必须导入包from docx.oxml.ns import qn) r = run._element.rPr.rFonts r.set(qn('w:eastAsia'),'楷体') # 字体颜色修改(借助于RGB修改) run.font.color.rgb = RGBColor(255,255,0) # 字号设置 run.font.size = Pt(30) # 其余常见文字格式修改 run.font.bold = True # 加粗 run.font.italic = True # 斜体 run.font.underline = True # 下划线 run.font.strike = True # 删除线 run.font.shadow = True # 阴影设置 doc.save(fileName)
小总结:
Document(fileName)
打开现有文件,以追加方式写入- 借助于
run
的font
属性实现字体格式的修改
-
表格操作(创建表格,合并单元格)
def addTable(fileName): '''python-docx模式向word文档中插入表格 :param fileName:文件保存以及打开的路径 :return: None ''' doc = Document(fileName) # 文档中添加表格(rows设置行数,cols设置列数,style设置风格-'Table Grid'表示保留表格线) table = doc.add_table(rows = 4,cols = 2,style = 'Table Grid') # 设置索引列 index = table.rows[0].cells index[0].text = 'Name:' index[1].text = 'Address' # 设置内容列 content1 = table.rows[1].cells content1[0].text = 'zhansan' content1[1].text = 'beijing' content2 = table.rows[2].cells content2[0].text = 'lisi' content2[1].text = 'shanghai' # 设置单元格合并(针对于cell变量进行合并单元格的操作) table.rows[3].cells[0].merge(table.rows[3].cells[1]) '''Merge方法相关注释: merge(other_cell)[source] ''' doc.save(fileName)
小总结:
add_table
创建单元格,rows,cols,style
参数实现表格性质指定- 表格内容添加时,注意指定
cells和text
merge
的发起对象为cell
,而merge
函数的参数为other cell
-
文章格式修改(标题格式,段落格式)
def changeParaStyle(fileName): '''python-docx实现段落格式修改 :param fileName: 文件打开和保存路径 :return: None ''' doc = Document() title = doc.add_heading('UETSC',level = 0) # 设置段落格式(LEFT,CENTER,RIGHT,JUSTIFY,DISTRIBUTE,JUSTIFY_MED,JUSTIFY_HI,JUSTIFY_LOW,THAI_JUSTIFY) title.alignment = WD_ALIGN_PARAGRAPH.CENTER # 设置标题居中 # 设置内容格式 doc.add_paragraph('most', style='List Bullet') # 加圆点 doc.add_paragraph('Least', style='List Number') # 加数字 # 设置行间距 for para in doc.paragraphs: # 针对于paragraph对象进行操作 para.paragraph_format.line_spacing = 1.0 # 添加分页 doc.add_page_break() # 文档保存 doc.save(fileName)
小总结:
- 设置行间距,借助于
paragraph_format.line_spacing
实现,操作的对象为文档中所有的para
对象 alignment
可以设置标题或者段落格式python-docx
常用的方法:add_page_break
用于在文档中新起一个页面
- 设置行间距,借助于
-
验证操作
doc
文档def TestDoc(fileName): doc = Document() doc.add_heading('123',level = 0) doc.save(fileName)
小总结:
python-docx
模块可以操作doc
文档
-
(2) win32
模块
-
简介:
win32
操作word
文档调用office
的底层组件,需要依赖于office
和windows
系统,运行速度较慢,但功能强大,理论上**office可以完成的内容,win32模块均可以完成
** -
安装:
-
安装
pypiwin32
模块,执行命令pip install pypiwin32
-
安装成功后,
import win32
显示No module named win32com , win32com is not a package
执行代码出现上述问题的原因在于
个人py文件命名为win32com,与引进的模块名称冲突,故产生上述错误
-
-
使用:
-
文件的创建和打开
def CreateAndOpenFiles(): # 开启进程 wordApp = Dispatch('Word.Application') # 设置程序可见,警告不提醒 wordApp.visible = True wordApp.DisplayAlerts = False # 文件的打开和保存 doc = wordApp.Documents.Add() doc.SaveAs('C:\python_learning\PythonAndWin32com\Test.docx') # 借助于绝对路径完成文档的保存 # 任意键退出 os.system('pause') # 文档关闭,软件退出 doc.Close(-1) wordApp.Quit()
小总结:
- 一般情况下,应用
win32com
模块借助于借助于绝对路径更加稳妥 win32com
模块中的常见命令,首字母一般均大写(如Documents、Add、Open、Close、Quit
等等)
- 一般情况下,应用
-
内容写入
def WriteIntoFiles(fileName): '''借助于win32com实现将内容写入word文档 :param fileName: 文件打开的路径 :return: None ''' # 开启进程 wordApp = Dispatch('Word.Application') # 设置程序可见,警告不提醒 wordApp.visible = True wordApp.DisplayAlerts = False # 文件打开 doc = wordApp.Documents.Open(fileName) # ------------------------------- # 文档内容输入 s = wordApp.Selection s.TypeText('UESTC') s.Text = ' I Love UESTC' # ------------------------------- # 文件保存 doc.SaveAs(fileName) # 按任意键关闭 os.system('pause') # 文档关闭,软件退出 doc.Close(-1) wordApp.Quit()
小总结:
win32com
模块中Selection
对象指代图形化界面操作中的光标- 文字输入包含
Text和TypeText
两个命令,二者的区别在于:Text
文字键入后,光标选中输入文字,方便后续进行格式调整TypeText
为正常输入文本,文字输入后,光标停留在输入文字后
-
文字格式调整:
def WordStyleChange(fileName): '''借助于win32com模块实现字体格式的修改 :param fileName: 文件打开和保存的路径 :return: None ''' # 开启进程 wordApp = Dispatch('Word.Application') # 设置软件可见,警告不提醒 wordApp.visible = True wordApp.DisplayAlerts = False # 打开文件 doc = wordApp.Documents.Open(fileName) # 键入文字内容,并修改格式 s = wordApp.Selection s.Text = 'ChengDu' # 文字格式修改 s.Style = -2 # 格式设置,设计宏定义 s.Font.Bold = True s.Font.Italic = True s.Font.Size = 28 s.Font.Name = '楷体' s.Font.Color = 255 # 文件保存 doc.SaveAs(fileName) # 任意键继续 os.system('pause') # 文件关闭,软件退出 doc.Close(-1) wordApp.Quit()
小总结:
win32com
格式修改测试代码中主要包含两个方面的修改:Selection对象的Style属性
,属性值涉及一系列宏定义,借助于文档查询,具体参照WdBuiltinStyle 枚举 (Microsoft.Office.Interop.Word) | Microsoft DocsSelection对象的Font属性
,可以设置常见的字体形式
-
高阶操作:
上述提及
win32com
模块功能强大,完成操作更加复杂的功能,可借助word文档中宏录制的方法
实现VBA
代码生成,进而转化为Python
代码完成操作,详细操作参考:https://zhuanlan.zhihu.com/p/67543981
-
二、Python
自动化操作excel
文件
python
自动化操作excel
文件主要介绍xlrd、xlwt、xlwings、xlutils
四个常用的模块
(1) xlrd
模块
-
简介:
xlrd
模块是python
读取excel
文档最常用的模块,读取excel
内容方便快捷 -
局限性:仅能操作
xls
类型的文档,xlsx
类型的文档无法进行操作 -
安装:
pip install xlrd
安装后,可能会遇到
xlrd
模块无法使用,此时由于模块版本过高,卸载后重新安装即可命令:
pip uninstall xlrd ; pip install xlrd==1.2.0
-
使用:
-
文件的获取和打开
def readxlsxFile(fileName): '''xlrd模块读取xlsx文件内容 :param fileName: 文件读取和保存的路径 :return: None ''' # 工作簿读取 data = xlrd.open_workbook(fileName) # 工作表获取 # sheetObj = data.sheet_by_index() # by index sheetObj = data.sheet_by_name('Sheet1') # by index
小总结:
- 工作簿的获取和打开,借助于
open_workbook()
命令 - 工作表的获取存在多种方式:
sheet_by_index和sheet_by_name
- 工作簿的获取和打开,借助于
-
文件内容获取
def getFileValue(fileName): '''获取xlsx文件内容的相关信息 :param fileName: 文件读取和保存路径 :return: None ''' data = xlrd.open_workbook(fileName) sheetObj = data.sheet_by_name('Sheet1') # 获取单元格内容 value = sheetObj.cell_value(0,1) # 注意索引值,获取(1,2处的内容) print('1行2列处的元素值为{}'.format(value)) # 获取行数和列数 rowNum = sheetObj.nrows colNum = sheetObj.ncols print('Sheet1表格共包含{}行{}列'.format(rowNum,colNum))
小总结:
- 特定单元格内容获取借助于
cell_value(x,y)命令
,获取(x+1,y+1)
处单元格的内容 nrows和ncols
属性可以获取表单的行数和列数
- 特定单元格内容获取借助于
-
(2) xlwt
模块
-
简介:
xlwt
是python
写入excel
文档最常用的模块,操作excel
文档的速度比较快,功能较为强大 -
局限性:
xlwt
模块仅能针对于新建文档执行内容写入的操作,不能打开已有的文档 -
使用:
-
基本操作(文件创建、保存;内容写入)
def createAndWriteFiles(fileName): '''python-xlwt模块创建excel文件并向其中写入内容 :param fileName: 文件打开和保存路径 :return: None ''' workbook = xlwt.Workbook(encoding = 'ascii') # 创建工作簿 worksheet = workbook.add_sheet('TestSheet') # 创建工作表 # 按索引向sheet中写入内容(索引下标从0开始) worksheet.write(0,0,'Name') worksheet.write(0,1,'Address') workbook.save(fileName)# 文件保存
小总结:
xlwt.Workbook()
工作簿创建,encoding
参数指定编码方式add_sheet()
添加工作表,对象必须为workbook
对象,即工作簿对象write()
命令内容写入,前两个参数实现位置指定
,末位参数为具体内容content
-
内容格式修改(字体、颜色、字号)
def setWorkBookWordStyle(fileName): '''python-xlwt模块设置workbook的字体格式 :param fileName: 文件打开和保存路径 :return: None ''' workbook = xlwt.Workbook(encoding = 'ascii') # 打开已存在的excel文件 Mysheet = workbook.add_sheet('TestSheet') # 格式调用 style = xlwt.XFStyle() font = xlwt.Font() # 格式设置 font.name = '楷体' # 字体设置 font.bold = True # 加粗 font.italic = True # 斜体 font.underline = True # 下划线的 font.shadow = True # 阴影 font.height = 20*15 font.colour_index = 5 # 格式应用 style.font = font # 无格式写入 Mysheet.write(0,0,'beijing VS shanghai') # 格式写入 Mysheet.write(1,0,'bejing VS shanghai',style) workbook.save(fileName) # 文件保存
小总结:
- 格式设置借助于
xlwt.font和xlwt.XFStyle
方法进行设置 - 格式设置之后并不会自动应用,需要结合
write
方法在最后一个参数处指定
- 格式设置借助于
-
单元格格式修改(背景颜色、单元格位置)
def setCellStyle(fileName): '''python-xlwt模块实现workbook单元格的格式修改 :param fileName: 文件保存路径 :return: None ''' # 表单创建 workbook = xlwt.Workbook(encoding = 'ascii') Mysheet = workbook.add_sheet('TestSheet') # ---------------------------------------------- # 单元格背景颜色修改 # 格式调用 style = xlwt.XFStyle() pattern = xlwt.Pattern() # 背景颜色设置(下述语句配合使用) pattern.pattern = xlwt.Pattern.SOLID_PATTERN pattern.pattern_fore_colour = 5 # 格式应用 style.pattern = pattern Mysheet.write(0,0,'电子科技大学') # 无格式字体写入 Mysheet.write(0,1,'电子科技大学',style) # 格式字体写入 # ----------------------------------------------- # 单元格居中等模式修改 # 格式调用 style = xlwt.XFStyle() al = xlwt.Alignment() # 格式设置 '''此处包含宏定义设置:VERT_TOP = 0x00;VERT_CENTER = 0x01;VERT_BOTTOM = 0x02;HORZ_LEFT = 0x01;HORZ_CENTER = 0x02;HORZ_RIGHT = 0x03; ''' al.horz = 0x02 al.vert = 0x03 # 格式应用 style.alignment = al Mysheet.write(4,5,'四川大学') # 无格式字体写入 Mysheet.write(5,5,'四川大学',style) # 格式字体写入 # ----------------------------------------------- workbook.save(fileName) # 文件保存
小总结:
- 背景格式修改借助于
xlwt.XFStyle和xlwt.Patteren
- 单元格位置修改(居中、左对齐)等格式借助于
xlwt.XFStyle和xlwt.Alignment
- 与内容格式类似,单元格格式并不会自动应用,需要在
write
命令中最后一个参数指定
- 背景格式修改借助于
-
单元格合并
def mergeTableCells(fileName): '''python-xlwt模块实现表单内单元格合并 :param fileName: 文件保存路径 :return: None ''' # 表单创建 workbook = xlwt.Workbook(encoding = 'ascii') Mysheet = workbook.add_sheet('TestSheet') # 内容写入合并后单元格 Mysheet.write_merge(2,3,4,5,'University Of Electronic Science And Technology') # 无格式内容写入 Mysheet.write(0,4,'University Of Electronic Science And Technology') workbook.save(fileName) # 文件保存
小总结:
xlwt
模块中设置与write命令类似的write_merge命令
,完成单元格合并操作write_merge(x,y,m,n,content)表示将内容content写入合并(x+1),(y+1),(m+1),(n+1)的单元格中
-
(3) xlwings
模块
-
简介:
xlwings
模块与上述xlwt
模块相比功能更加强大,可以更好的适用于数据分析处理
的任务,可以与DataFrame、pandas、numpy
等很地进行交互 -
局限性:
xlwings
模块功能最为强大,但是在操作excel
文档时,速度慢,肉眼可见的慢 -
使用:
-
文件的打开和创建(打开现有文件,创建新文件)
def createAndOpenFiles(fileName): '''python-xlwings模块实现excel文件的创建与打开 :param filieName: 文件保存或者打开路径 :return: None ''' # 软件打开 app = xw.App(visible = True,add_book = False) # visible设置excel文件开启 # -------------------------------- # 已有文件的打开与保存 workbook = app.books.open(fileName) workbook.save(fileName) # 文件关闭,软件退出 workbook.close() app.quit() # -------------------------------- # -------------------------------- # # 新excel文件的创建与保存 # new_workbook = app.books.add() # new_workbook.save(fileName) # # 文件关闭,软件退出 # new_workbook.close() # app.close() # --------------------------------
小总结:
- 借助于
xlwings
模块开启软件,App()
方法中visible
参数可以设置软件是否可见 app.books
中包含open和add
两个方法,分别代表打开和创建文件xlwings
模块使用完毕后,使用close和quit
命令分别关闭记事本和退出软件
- 借助于
-
读取文件内容(类似于
xlrd
模块功能)def ReadExcelFiles(fileName): '''python-xlwings模块实现excel文件内容读取 :param fileName: 文件打开以及保存的路径 :return: None ''' # 软件打开 app = xw.App(visible = True,add_book = False) # 已存在表单打开 workbook = app.books.open(fileName) sheet = workbook.sheets['Sheet1'] '''1. 文件内容读取-以列表形式返回''' # 文件内容读取(以列表list形式返回结果) address = sheet.range('A2:A3').value # output->['beijing', 'sahnghai'] name = sheet.range('B2:B3').value # output->['linxuan', 'zhansan'] # 返回二维列表 sheetContent = sheet['A1:B3'].value # output->[['Address', 'Name'], ['beijing', 'linxuan'], ['sahnghai', 'zhansan']] '''2. 文件内容读取,返回单元格内容''' cellContent1 = sheet[0,0].value # output->Address cellContent2 = sheet[1,1].value # output->linxuan os.system('pause') # 防止excel文件打开闪退,设置按任意键继续 # 文件关闭,软件退出 workbook.close() app.quit()
小总结:
- 工作簿中的
sheets
命令可以用来打开工作簿中特定的工作表 sheet
中内容读取包括两种读取方式:- 以列表形式返回,借助于命令
sheet['An:Bn']
- 以字符串形式返回,借助于命令
sheet[m,n]
- 以列表形式返回,借助于命令
app设定visible后,使用完毕直接quit会造成软件闪退,因此程序添加os.system('pause')代码实现按任意键退出的操作
- 工作簿中的
-
写入文件内容(类似于
xlwt
功能)def writeIntoFiles(fileName): '''python-xlwings实现向excel文件中写入内容 :param fileName: 文件打开及保存路径 :return: None ''' # 打开软件 app = xw.App(visible = True,add_book = False) # 表单创建 workbook = app.books.open(fileName) sht = workbook.sheets['Sheet1'] # 内容写入 sht.range('A4').value = 'Chengdu' sht.range('A5').value = 'Beijing' # 按任意键继续 os.system('pause') # 文件保存 workbook.save(fileName) # 文件关闭,软件退出 workbook.close() app.quit()
小总结:
- 与读取类似,
range.value
直接等号赋值方式实现单元格内容的写入
- 与读取类似,
-
文件字体格式修改
def FontStyleChange(fileName): '''借助于python-xlwings实现文件字体格式的修改 :param fileName: 文件打开和保存的路径 :return: None ''' # 软件打开 app = xw.App(visible = True,add_book = False) # 工作簿和工作表创建 workbook = app.books.open(fileName) sheet = workbook.sheets['Sheet1'] # 单元格字体格式修改 sheet.range('A2').font.name = 'Times New Roman' sheet.range('A2').font.color = (255,0,0) sheet.range('A2').font.bold = True # 按任意键退出 os.system('pause') # 文件保存 workbook.save(fileName) # 文档关闭,软件退出 workbook.close() app.quit()
小总结:
- 字体格式修改借助于
range.font()
内含诸多style
设置,包含bold、color、name
等 - 字体格式设置后,代码需要添加
workbook.save()
命令,否则程序退出后文档不会自动进行保存
- 字体格式修改借助于
-
单元格合并:
def mergeCells(fileName): '''借助于python-xlwings模块实现单元格合并 :param fileName: 文件打开和保存的路径 :return: None ''' # 软件打开 app = xw.App(visible = True,add_book = False) # 工作簿、工作表创建 workbook = app.books.open(fileName) sheet = workbook.sheets['Sheet1'] # 设置单元格合并(合并时注意:merge方法返回NoneType对象,无法获取value进行赋值) sheet.range('J7:J9').merge() sheet.range('J7').value = 'UESTC' # 按任意键退出 os.system('pause') # 文件保存 workbook.save(fileName) # 文件关闭,软件退出 workbook.close() app.quit()
小总结:
-
借助于
ptython-xlwings
模块实现单元格合并,使用merge
方法,注意将range
选中的区域进行合并 -
```merge``方法返回的对象为NoneType,不具备value属性进行赋值的操作,否则会显示
AttributeError: 'NoneType' object has no attribute 'value'
-
写入内容操作可以借助于合并的任意单元格实现
-
-
(4) xlutils
模块
-
简介:
xlutils
同样是python
操作excel
文件常用模块之一,与其他模块相比最特别功能在于copy
功能,可以结合xlrd
模块共同使用 -
局限性:由于
xlutils
模块一般情况下与xlrd
模块配合使用,故一般情况下操作xls
文件 -
使用:
-
excel
文件复制def CopyFunction(OpenfileName,SavefileName): '''借助于python-xlutils模块实现excel文件的拷贝 :param OpenfileName: 原始文件路径 :param SavefileName: 拷贝文件保存路径 :return: None ''' workbook = xlrd.open_workbook(OpenfileName,formatting_info = True) new_workbook = copy(workbook) new_workbook.save(SavefileName)
小总结:
xlutils
的copy
功能需结合xlrd
模块共同使用,copy
的对象为xlrd
模块获取的wordbook
对象- 新产生的对象需要借助于
save
命令进行保存,以生成copy
后的文件对象 formatting_info
参数决定拷贝后的文件是否保留原始文档的格式(True
表示保留)
-
文件内容写入
def WriteIntoFiles(SoursefileName,ObjFileName): '''借助于python-xlutils修改文件内容 :param SoursefileName:原始文件路径 :param ObjFileName: 文件保存路径 :return: None ''' workbook = xlrd.open_workbook(SoursefileName) new_workbook = copy(workbook) sht = new_workbook.get_sheet(0) sht.write(0,0,'CustomerName') new_workbook.save(ObjFileName)
小总结:
- 内容写入文件借助于
write(m,n,content)
表示将内容content
写入(m+1,n+1)
的位置 wirte
命令的使用对象必须为sheet
对象,而非workbook
对象
- 内容写入文件借助于
-
三、关于特殊要求的实现验证
(1) 验证excel
操作模块对已经存在的excel
文件内容修改时格式是否发生改变:
-
验证代码
-
xlutils+xlrd
模块验证:def XlwtTest(fileName): '''验证xlutils模块是否可以保留原始格式 :param fileName: 原始文件 :return: None ''' # 工作簿打开 workbook = xlrd.open_workbook(fileName,formatting_info = True) # copy后的文件可以保留格式 # 工作簿复制 new_workbook = copy(workbook) # 工作表打开 sheet = new_workbook.get_sheet(0) # 内容修改 sheet.write(1,1,'chengdu') # 文件保存 new_workbook.save('xlutilsTest.xls')
xlrd.open_workbook
函数中formatting_info
参数的设置可以保证copy
后的文件保留原始格式,否则格式丧失 -
xlwings
模块def XlwingsTest(fileName): # 软件打开 app = xw.App(visible = True,add_book = False) # 工作簿、工作表创建 workbook = app.books.open(fileName) sheet = workbook.sheets['Sheet1'] # 内容修改 sheet.range('B2').value = 'chengdu' # 文件保存 workbook.save('XlwingsTest.xls') # 按任意键退出 os.system('pause') # 文件关闭,软件退出 workbook.close() app.quit()
-
-
验证结果:
-
xlwings
模块内容修改后,excel
文件中的所有格式均会得以保留,包括"字体格式",“单元格格式”,“特殊格式” -
xlutils+xlrd
模块内容修改后,excel
文件中所有内容均会丧失Tips : 只要是改动,哪怕改动并非带有格式的内容,原始格式均会丧失
-
(2) word文档生成自动生成目录
# 目录生成函数(users self coding)
def update_toc(docx_file):
'''win32com模块自定义产生目录
:param docx_file: docx文件的原始目录
:return: None
'''
word = win32com.client.DispatchEx("Word.Application")
word.Visible = 0 # 设置应用可见
word.DisplayAlerts = 0
doc = word.Documents.Open(docx_file) # 使用微软office打开word
toc_count = doc.TablesOfContents.Count # 判断是否有无目录,如果数量是1则代表已经有目录了
if toc_count == 0:
for i, p in enumerate(doc.Paragraphs): # 遍历word中的内容
if '目录' in p.Range.Text: # 用于指定目录页面,看下面提示
p.Range.InsertParagraphAfter() # 添加新的段落
p.Range.InsertAfter("---")
parag_range = doc.Paragraphs(i+2).Range
doc.TablesOfContents.Add(Range=parag_range,
UseHeadingStyles=True,
LowerHeadingLevel=2) # 生成目录对象
elif toc_count == 1:
toc = doc.TablesOfContents(1)
toc.Update()
doc.Close(SaveChanges=True)
word.Quit()
小总结:
- 借助于
win32com
模块产生文件目录,可以完成生成目录的操作,但是速度比较慢- 此函数应用前提:文章中另起一页,且必须包含
目录
二字