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

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

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

import win32com.client as win32
import os
word = win32.gencache.EnsureDispatch('Word.Application')
#启动word对象应用
word.Visible = False
path = 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.Range
parag_range.Text ='标题1'
###设置样式
parag_range.Style = doc.Styles("Heading 1")#Heading 1 是样式的名称border = parag.Borders(constants.wdBorderBottom)
border.LineStyle = constants.wdLineStyleSingle
border.LineWidth = constants.wdLineWidth225pt#添加标题2
parag_range.Text +='\n'
parag = doc.Paragraphs.Add()
parag_range = parag.Range
parag_range.Text ='标题2'
parag_range.Style = doc.Styles("Heading 2")#二级标题
##添加正文
parag_range.Text +='\n'
parag = doc.Paragraphs.Add()
parag_range = parag.Range
parag_range.Text ='正文'
parag_range.Style = doc.Styles("Normal")#正文

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

2、插入目录

import win32com.client as win32
from win32com.client import constantsdoc_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 ='标题1'
###设置样式
parag_range.Style = doc.Styles("Heading 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 ='标题2'
parag_range.Style = doc.Styles("Heading 2")#二级标题
##添加正文
parag_range.InsertParagraphAfter()
parag_range = parag.Range
parag_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)

2021-01-26 Python自动化办公-处理word文档相关推荐

  1. Python自动化办公:pdf文档操作

    在后台回复[阅读书籍] 即可获取python相关电子书~ Hi,我是山月. 之前给大家介绍了python处理excel.word.ppt的相关教程,不知道大家学的怎么样? 在后台回复[自动化办公]即可 ...

  2. Python学习之批量word文档转pdf并统计其页码

    pypdf2是一个Python模块,可以用来读取.写入和操作PDF文件.要安装pypdf2模块,请按照以下步骤操作: 确保你已经安装了Python.你可以在终端或命令提示符中输入python --ve ...

  3. python 自动生成word文档,python实现的生成word文档功能示例

    python实现的生成word文档功能示例 发布时间:2020-09-23 11:37:44 来源:脚本之家 阅读:108 作者:zhizunyu2009 本文实例讲述了python实现的生成word ...

  4. python-docx中文开发文档_使用Python语言-docx生成Word文档

    本文主要向大家介绍了使用Python语言-docx生成Word文档,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助. < 学会来使用python操作数据表和PDF,今天我们尝试 ...

  5. Python自动化办公:word文件操作教程

    在后台回复[阅读书籍] 即可获取python相关电子书~ Hi,我是山月. 之前给大家完整的介绍了用python操作excel的几个库:xlrd.xlwt.openpyxl. 山月也已经整理好了,还没 ...

  6. python自动化办公:word篇。职场高手不是梦。

    工具包安装 使用的库:docx python 没有自带.需要安装. 若运行出现:ModuleNotFoundError: No module named 'exceptions' 则说明安装失败,需要 ...

  7. Python自动化办公之Word,全网最全看这一篇就够了

    ????????关注后回复 "进群" ,拉你进程序员交流群???????? 作者丨超级大洋葱806 https://tangxing.blog.csdn.net/article/d ...

  8. Python自动化办公之Word,全网最全看这一篇就够了!

    环境安装 使用Python操作word大部分情况都是写操作,也有少许情况会用到读操作,在本次教程中都会进行讲解, 本次课程主要用到以下4个库,请大家提前安装. PS:如有需要Python学习资料的小伙 ...

  9. Python自动化办公 - 对Word的操作(Python-docx的基本使用)

    1 安装模块 Windows用户打开命令行输入:pip install python-docx Mac用户打开终端/Terminal输入:pip3 install python-docx 导入模块:i ...

最新文章

  1. Tomcat内存溢出解决方法
  2. Sobel 边缘实现
  3. 【数据竞赛】图像赛排行榜拉开100名差距的技巧
  4. vim 代码注释插件
  5. Linux-No.04 Linux 设置定时任务发送邮件功能
  6. .NET Core ResponseCache【缓存篇(一)】
  7. 蔡高厅老师 - 高等数学阅读笔记 - 03 - 极限(13、14、15、16、17)
  8. Linux学习教程,Linux入门教程(超详细)| 网址推荐
  9. HLS playlist典型示例
  10. 在SQL Server中对视图进行增删改
  11. 光猫上网问题 看我如何解决
  12. 打造人脉关系网,成就事业
  13. Subclipse in Eclipse的安装和使用
  14. 全国产PC轮番涌现,完全替代wintel或许不久就会变成现实
  15. 本经阴符七术--鬼谷子
  16. 华为微认证华为云计算服务实践稳过 笔记资料
  17. request+cheerio+iconv-lite+phantomJs制作简单漫画网站爬虫NodeJs项目
  18. RecentsActivity启动分析二
  19. NoSuchMethodError 错误——包冲突解决办法
  20. 滴滴柳青:一个比你有才,又比你努力的富二代!

热门文章

  1. sql 时间范围查询_Excel中使用SQL查询,单元格范围最多支持65536行?
  2. 深度学习实现NBA球星颜值打分完整案例(二)
  3. 【android-tips】adb 常用命令汇总(持续更新中)
  4. 小白的消费为何被迫升级?-java数据类型的转换
  5. 有哪些通俗易懂的例子可以解释 IaaS、PaaS、SaaS 的区别?
  6. 微服务实战(五):微服务的事件驱动数据管理
  7. 微服务可靠性设计--转
  8. Spring Security 4 Method security using @PreAuthorize,@PostAuthorize, @Secured, EL--转
  9. 李宏毅深度学习——第一天(Bias and Variance)
  10. 国家卫计委倡导健康生活理念:每天发呆5分钟