2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > -01-26 Python自动化办公-处理word文档

-01-26 Python自动化办公-处理word文档

时间:2020-05-21 17:11:48

相关推荐

-01-26 Python自动化办公-处理word文档

Python自动化办公-处理word文档

年底项目投标,需要整理大量的内容,标书的很多内容是其实是之前的标书重复的,可以把对应的各个部分内容合并,然后再处理格式等。如果采用常规操作每次操作需要打开子目录——>找到word文档——>全选复制——>粘贴到新文档——>调整格式——>核对检查,期间出现错误还得用更多的时间,这太浪费时间了!

采用Python的组间对象模型(COM)设计了一个同时对多个word文件进行合并的程序,代码如下:​​​​

import win32com.client as win32import osword = win32.gencache.EnsureDispatch('Word.Application')#启动word对象应用word.Visible = Falsepath=r'D:\doc'files = []for filename in os.listdir(path):filename = os.path.join(path,filename)files.append(filename)#新建合并后的文档output = word.Documents.Add()for file in files:output.Application.Selection.InsertFile(file)#拼接文档#获取合并后文档的内容doc = output.Range(output.Content.Start, output.Content.End)output.SaveAs(r'D://doc//result.docx')#保存output.Close()

大概等了两三分钟一份110多页、2万多字的报告就自动完成了,

win32com库的一些其他的用法

1、添加多级标题

import win32com.client as win32from win32com.client import constantsdoc_app = win32.gencache.EnsureDispatch('Word.Application')#打开word应用程序doc_app.Visible =1#设置应用程序可见doc = doc_app.Documents.Add()#创建新得文档#添加标题1##添加文字parag = doc.Paragraphs.Add()#添加新得段落parag_range = parag.Rangeparag_range.Text ='标题1'###设置样式parag_range.Style = doc.Styles("Heading 1")#Heading 1 是样式的名称border = parag.Borders(constants.wdBorderBottom)border.LineStyle = constants.wdLineStyleSingleborder.LineWidth = constants.wdLineWidth225pt#添加标题2parag_range.Text +='\n'parag = doc.Paragraphs.Add()parag_range = parag.Rangeparag_range.Text ='标题2'parag_range.Style = doc.Styles("Heading 2")#二级标题##添加正文parag_range.Text +='\n'parag = doc.Paragraphs.Add()parag_range = parag.Rangeparag_range.Text ='正文'parag_range.Style = doc.Styles("Normal")#正文

使用add不会添加新的一个段落,而是指向当前所在的段落。

2、插入目录

import win32com.client as win32from win32com.client import constantsdoc_app = win32.gencache.EnsureDispatch('Word.Application')doc_app.Visible =1doc = doc_app.Documents.Add()#添加标题1##添加文字parag = doc.Paragraphs.Add()parag_range = parag.Rangeparag_range.Text ='标题1'###设置样式parag_range.Style = doc.Styles("Heading 1")#Heading 1 是样式的名称border = parag.Borders(constants.wdBorderBottom)border.LineStyle = constants.wdLineStyleSingleborder.LineWidth = constants.wdLineWidth225pt#添加标题2parag_range.InsertParagraphAfter()#在当前位置之后,新插入一行parag_range = parag.Rangeparag_range.Text ='标题2'parag_range.Style = doc.Styles("Heading 2")#二级标题##添加正文parag_range.InsertParagraphAfter()parag_range = parag.Rangeparag_range.Text ='正文'parag_range.Style = doc.Styles("Normal")#正文##插入目录##parag_range = doc.Paragraphs(1)##找到第一行doc.Paragraphs(1).Range.InsertParagraphBefore()#在首行之前插入一行,用于插入目录parag_range = doc.Paragraphs(1).Range#指向新插入的行#插入目录##从当前指向的位置插入目录,使用默认样式设置目录样式,包含3级标题doc.TablesOfContents.Add(Range=parag_range, UseHeadingStyles=True,LowerHeadingLevel=3)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。