what’s the win32com 模块

win32com 模块主要为 Python 提供调用 windows 底层组件对 word 、Excel、PPT 等进行操作的功能,只能在 Windows 环境下使用,并且需要安装 office 相关软件才行(WPS也行)。

使用 win32com 模块主要是因为 Python 针对 word 文档操作的第三方库相对较少并且功能较弱,Python 有针对 .docx 后缀文件的第三方库如 python-docx、pydocx等等,但是没有针对 .doc 和 .wps 的第三方库,所以这里就只能使用 win32com 模块。 相对而言 Python 针对 Excel文档操作的第三方库就非常友好

pip install pywin32
import win32com
# 最常用的模块其实是win32com.client

基本操作

模拟打开 office

word = win32com.client.Dispatch('Word.Application')
# 或者使用下面的方法,使用启动独立的进程:
# word = win32com.client.DispatchEx('Word.Application')

声明属性

word.Visible = 0 # 后台运行
word.DisplayAlerts = 0 # 不显示,不警告
# 如果不声明上述属性,运行的时候会显示的打开office软件操作文档

打开文件

doc = word.Documents.Open('xxx.doc) # 打开一个已有的word文档
# new_doc = word.Documents.Add() # 创建新的word文档

读取内容

data = doc.paragraphs[0].text

插入文字

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
# 在文档开头添加内容
myRange1 = doc.Range(0,0)
myRange1.InsertBefore('Hello word')# 在文档末尾添加内容
myRange2 = doc.Range()
myRange2.InsertAfter('Bye word') # 在文档i指定位置添加内容
myRange3= doc.Range(0, insertPos) # insertPos为数字
myRange3.InsertAfter('what's up, bro?')

针对关键词的操作

应用场景:搜索关键字,将目标关键字替换为指定文字,或者更改关键字颜色、背景色等等

文字替换

word.Selection.Find.ClearFormatting()
word.Selection.Find.Replacement.ClearFormatting()
word.Selection.Find.Execute(OldStr, False, False, False, False, False, True, 1, True, NewStr, 2)
'''
上面涉及的 11 个参数说明(OldStr--搜索的关键字,True--区分大小写,True--完全匹配的单词,并非单词中的部分(全字匹配),True--使用通配符,True--同音,True--查找单词的各种形式,True--向文档尾部搜索,1,True--带格式的文本,NewStr--替换文本,2--替换个数(0表示不替换,1表示只替换匹配到的第一个,2表示全部替换)
'''

更改文字颜色、背景色

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
self.xlApp.Selection.Find.ClearFormatting()
self.xlApp.Selection.Find.Replacement.ClearFormatting()# 循环操作,将每个匹配到的关键词进行换色
while self.xlApp.Selection.Find.Execute(str, False, False, False, False, False, True, 0, True, "", 0):word.Selection.Range.HighlightColorIndex  = 11 # 替换背景颜色为绿色word.Selection.Font.Color= 255 # 替换文字颜色为红色

更多背景颜色的值

'''
wdAuto    0    Automatic color. Default; usually black.
wdBlack    1    Black color.
wdBlue    2    Blue color.
wdBrightGreen    4    Bright green color.
wdByAuthor    -1    Color defined by document author.
wdDarkBlue    9    Dark blue color.
wdDarkRed    13    Dark red color.
wdDarkYellow    14    Dark yellow color.
wdGray25    16    Shade 25 of gray color.
wdGray50    15    Shade 50 of gray color.
wdGreen    11    Green color.
wdNoHighlight    0    Removes highlighting that has been applied.
wdPink    5    Pink color.
wdRed    6    Red color.
wdTeal    10    Teal color.
wdTurquoise    3    Turquoise color.
wdViolet    12    Violet color.
wdWhite    8    White color.
wdYellow    7    Yellow color.
'''

页眉文字替换

word.ActiveDocument.Sections[0].Headers[0].Range.Find.ClearFormatting()
word.ActiveDocument.Sections[0].Headers[0].Range.Find.Replacement.ClearFormatting()
word.ActiveDocument.Sections[0].Headers[0].Range.Find.Execute(OldStr, False, False, False, False, False, True, 1, False, NewStr, 2)

打印

doc.PrintOut()

保存

doc.Save() # 保存
doc.SaveAs('asdasd.doc') # 另存为

退出

退出操作必须得做,不然进程就会一直占据着这个文件,下次操作相同文件的时候就会报错

doc.Close() # 关闭 word 文档
word.Documents.Close(wc.wdDoNotSaveChanges) # 保存并关闭 word 文档
word.Quit() # 关闭 office

注意事项

对文档的操作理论上支持多线程,但是会有大概率报错。建议开启多线程时全局声明一个 word 然后每一个线程声明一个 doc 进行操作,而不是每一个线程都声明一个 word 和 doc。并且,在每一个线程中,doc 声明之前+doc关闭之后,需要加入以下两行代码

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
import pythoncompythoncom.CoInitialize() # 声明 doc 之前要加入的代码doc = wordhandle.Documents.Open('xxx.doc'’)
# 各种骚操作
doc.Save()
doc.Close()pythoncom.CoUninitialize() # 关闭 doc 之后加入的代码

转码操作

win32com 模块支持对文档进行各种转码操作,如 doc 转 docx,docx 转 doc,wps 转 pdf,pdf 转 docx 等等

下面举个 docx 转 pdf 例子

from win32com import client as wcwordhandle = wc.Dispatch("Word.Application")
wordhandle.Visible = 0 # 后台运行,不显示
wordhandle.DisplayAlerts = 0  #不警告
doc = wordhandle.Documents.Open('xxx.docx')
doc.SaveAs('xxx.pdf', 17) #  txt=4, html=10, docx=16, pdf=17
doc.Close()
word.Quit()

转码的码

''' wdFormatDocument = 0wdFormatDocument97 = 0wdFormatDocumentDefault = 16wdFormatDOSText = 4wdFormatDOSTextLineBreaks = 5wdFormatEncodedText = 7wdFormatFilteredHTML = 10wdFormatFlatXML = 19wdFormatFlatXMLMacroEnabled = 20wdFormatFlatXMLTemplate = 21wdFormatFlatXMLTemplateMacroEnabled = 22wdFormatHTML = 8wdFormatPDF = 17wdFormatRTF = 6wdFormatTemplate = 1wdFormatTemplate97 = 1wdFormatText = 2wdFormatTextLineBreaks = 3wdFormatUnicodeText = 7wdFormatWebArchive = 9wdFormatXML = 11wdFormatXMLDocument = 12wdFormatXMLDocumentMacroEnabled = 13wdFormatXMLTemplate = 14wdFormatXMLTemplateMacroEnabled = 15'''

Python 使用 win32com 模块对 word 文件进行操作相关推荐

  1. python 操作word教程_Python 使用 win32com 模块对word文件进行操作

    what's the win32com 模块 win32com 模块主要为 Python 提供调用 windows 底层组件对 word .Excel.PPT 等进行操作的功能,只能在 Windows ...

  2. 用python的win32com模块替换word中的文字搞定批量打印奖状

    六一将至,学校要表彰优秀同学,于是安排我去打印奖状.按照一般的情况,打印奖状都是打印个模板批量复印,然后手工填写名字,然后我们的校长特别叮嘱我说,名字也要用打印的,这样比较正式.看到获奖名单上的100 ...

  3. 应用python的docx模块解析word文件内容

    目录 工作问题 涉及知识点 实现过程 目标 调用对应的库和模块 定义通用方法 1.[遍历全部的同格式文件]返回一个文件夹内,限定某类格式文件,返回全部这类文件的绝对路径 2.[提取段落&表格中 ...

  4. Python:win32com 模块

    win32com 模块主要为 Python 提供调用 windows 底层组件对 word .Excel.PPT 等进行操作的功能,只能在 Windows 环境下使用,并且需要安装 office 相关 ...

  5. python doc转docx_利用python中的win32com模块将doc文件转为docx文件

    简介 win32com模块的功能也是非常的强大的,能够处理各种的文件 word操作 如何使用python的win32com模块实现将doc类型文件转成docx类型的文件 import os from ...

  6. python和wps-基于python的docx模块处理word和WPS的docx格式文件方式

    Python docx module for Word or WPS processing 本文是通过docx把word中的表格中的某些已填好的内容提取出来,存入excel表格. 首先安装docx的p ...

  7. 调研-python使用win32com模块操纵excel

    文章目录 背景介绍 其他工具 简单使用 wps和excel访问的API不同的问题 尝试1: 尝试2: 尝试3 尝试4 尝试5 正道的光 背景介绍 使用的工具是:pywin32 PS:不是网上其他有些弄 ...

  8. python文本筛选多个word_用Python批量替换多个Word文件中的文字

    实例14:用Python批量替换多个Word文件中的文字 公众号"Python操作Office软件高效工作" 29 人赞同了该文章 我们在实例7中批量生成了采购合同.但是假设现在我 ...

  9. word批量替换多组文字 python_实例14:用Python批量替换多个Word文件中的文字

    我们在实例7中批量生成了采购合同.但是假设现在我方的公司名由"ABC商贸有限公司"变成了"ABC贸易有限公司",那我们就需要去每份合同中对应位置进行替换.当然也 ...

最新文章

  1. 命令行的基本使用方法(权限)
  2. eui加载时间长_游戏加载时间越来越短了?背后藏着这些小心机
  3. c++使用Vigenere加解密文本的算法(附完整源码)
  4. 第十二章 类和动态内存分配
  5. 在打开的Web表单模态窗口中,避免点击服务端控件时弹出新窗口的技巧
  6. SAP S/4HANA get custom fields usage的获取逻辑
  7. 知识图谱需要解决的问题
  8. 数学 :追求真和美的学问
  9. 如何让Python网络请求不走系统代*理*
  10. 罗振宇2021跨年演讲1:长大以后有多少责任和烦恼?
  11. 东方航空:拟与携程等出资设立三亚国际航空
  12. pv=clear后的修复
  13. Web服务器程序解释请求消息并作出响应
  14. android上对cookie的读写操作,Android上对Cookie的读写操作(附Demo)
  15. Centos7 Zabbix监控部署
  16. 如何恢复电脑中的CHK文件?
  17. KDD CUP 99 数据集解析、挖掘与下载
  18. ADNI-python实现批量nii和dcm文件转换为png图像
  19. 微信小程序登录+坐标定位显示km数
  20. Android系统自定义关机充电图标

热门文章

  1. C语言课程设计——实现简单的管理系统
  2. 申报山西省“专精特新”中小企业需要具备哪些条件?
  3. jar包、class文件批量反编译并解压
  4. 东北大学acm暑期夏令营结构体
  5. 《计算机网络安全》学习笔记之访问控制与虚和谐拟专和谐用网技术
  6. 华硕天选二FA506QM BIOS更新至311无法读取固态硬盘
  7. 在linux中运行电子词典,《Linux下电子词典的设计和实现》.doc
  8. 【推荐】《铁甲钢拳/铁甲机器人》[BD-R/1.1G][中英双字]1024分辨率高清下载
  9. 一个眼神 比亚迪车载机器人为你点歌
  10. 服务器市场混乱,信息安全是关键