相关文章推荐
坚韧的椅子  ·  自製 Grid System - iT ...·  1 年前    · 

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--向文档尾部搜索,
         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 pythoncom pythoncom.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 wc
wordhandle = 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 = 0
            wdFormatDocument97 = 0
            wdFormatDocumentDefault = 16
            wdFormatDOSText = 4
            wdFormatDOSTextLineBreaks = 5
            wdFormatEncodedText = 7
            wdFormatFilteredHTML = 10
            wdFormatFlatXML = 19
            wdFormatFlatXMLMacroEnabled = 20
            wdFormatFlatXMLTemplate = 21
            wdFormatFlatXMLTemplateMacroEnabled = 22
            wdFormatHTML = 8
            wdFormatPDF = 17
            wdFormatRTF = 6
            wdFormatTemplate = 1
            wdFormatTemplate97 = 1
            wdFormatText = 2
            wdFormatTextLineBreaks = 3
            wdFormatUnicodeText = 7
            wdFormatWebArchive = 9
            wdFormatXML = 11
            wdFormatXMLDocument = 12
            wdFormatXMLDocumentMacroEnabled = 13
            wdFormatXMLTemplate = 14
            wdFormatXMLTemplateMacroEnabled = 15
                    what’s the win32com 模块win32com 模块主要为 Python 提供调用 windows 底层组件对 word 、Excel、PPT 等进行操作的功能,只能在 Windows 环境下使用,并且需要安装 office 相关软件才行(WPS也行)。使用 win32com 模块主要是因为 Python 针对 word 文档操作的第三方库相对较少并且功能较弱,Python 有针对 .docx 后缀文件的第三方库如 python-docx、pydocx等等,但是没有针对 .doc 和 .w
				
PythonWin32应该是提供了访问win32 api的能力 pythoncom提供了使用windows com组件的能力。具体能用来做什么,由你是用的com决定,你可以搜索com组件相关的资料。 1、Win32顾名思义就是MS的Windows应用,针对Windows平台对Python做的扩展,和其它Python的本地化扩展类似,ActivePython的发行版貌似提供有这个;
win32com 模块主要为 Python 提供调用 windows 底层组件对 word、Excel、PPT 等进行操作的功能,只能在 Windows 环境下使用,并且需要安装 office 相关软件才行(WPS也行)。   使用 win32com 模块主要是因为 Python 针对 word 文档操作的第三方库相对较少并且功能较弱,Python 有针对 .docx 后缀文件的第三方库如 p...
开发工具:PyCharm 2018。 Python内置模块:os、_thread、sys、codecs、re。 第三方模块:PyQt5、pyqt5-tools、PyPDF2、pywin32。 说明:pywin32模块在应用pip安装时,采用“pip install pywin32”命令进行安装,而在导入模块时,模块名称为win32com
本工具由Python3.9借用Pyinstaller打包,本人自写代码,可能略有囊肿,但功能实现没有问题,主要使用pywin32模块和Pysimple模块实现的Word、Excel批量加密,当然也可以实现单个Word、Excel文件加密,打包平台为win7x86,Windows10打包要28MB,Windows7打包起来比较小,只需要11MB左右,经过测试正常运行,其中已确认的密码不需要输入,在做好所有选项的设置后会自动更新,需要注意的是,在使用本工具的时候,加密完成后会将源文件删除,由于技术原因还没有改进成可以选择是否可供删除,后续如果再有补充的话可能会有其他的一些功能。
Python 基础教程 Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。 Python由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年. 像Perl语言一样, Python 源代码同样遵循 GPL(GNU General Public License)协议. 现在开始学习 Python! 谁适合阅读本教程? 本教程适合想从零开始学习Python编程语言的开发人员。当然本教程也会对一些模块进 行深入,让你更好的了解Python的应用。 学习本教程前你需要了解 在继续本教程之前,你应该了解一些基本的计算机编程术语.如果你学习过PHP,ASP等编程 语言,将有助于你更快的了解Python编程。 执行Python程序 对于大多数程序语言,第一个入门编程代码便是"Hello World!",以下代码为使用Python输出"Hello World!": 实例(Python 2.0+) #!/usr/bin/python print "Hello, World!"; 运行实例 » Python 3.0+版本已经把print作为一个内置函数,正确输出"Hello World!"代码如下: 实例(Python 3.0+) #!/usr/bin/python print("Hello, World!"); Python 简介 Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。 Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号 ,它具有比其他语言更有特色语法结构。 Python 是一种解释型语言: 这意味着开发过程中没有了编译这个环节。类似于PHP和Perl语言。 Python 是交互式语言: 这意味着,您可以在一个Python提示符,直接互动执行写你的程序。 Python 是面向对象语言: 这意味着Python支持面向对象的风格或代码封装在对象的编程技术。 Python 是初学者的语言:Python 对初级程序员而言,是一种伟大的语言,它支持广泛的应用程序开发,从简单的文字处 理到 WWW 浏览器再到游戏. Python 发展历史 Python 是由 Guido van Rossum 在八十年代末和九十年代初,在荷兰国家数学和计算机科学研究所设计出来的. Python 本身也是由诸多其他语言发展而来的,这包括 ABC、Modula-3、C、C++、Algol- 68、SmallTalk、Unix shell 和其他的脚本语言等等。 像 Perl 语言一样,Python 源代码同样遵循 GPL(GNU General Public License)协议。 现在 Python 是由一个核心开发团队在维护,Guido van Rossum 仍然占据着至关重要的作用,指导其进展. Python 特点 1。易于学习:Python有相对较少的关键字,结构简单,和一个明确定义的语法,学习起 来更加简单。 2.易于阅读:Python代码定义的更清晰。 3.易于维护:Python的成功在于它的源代码是相当容易维护的。 4.一个广泛的标准库:Python的最大的优势之一是丰富的库,跨平台的,在UNIX,Windo ws和Macintosh兼容很好。 5.互动模式:互动模式的支持,您可以从终端输入执行代码并获得结果的语言,互动的测 试和调试代码片断。 6.可移植:基于其开放源代码的特性,Python已经被移植(也就是使其工作)到许多平 台。 7。可扩展:如果你需要一段运行很快的关键代码,或者是想要编写一些不愿开放的算法 ,你可以使用C或C++完成那部分程序,然后从你的Python程序中调用。 8.数据库:Python提供所有主要的商业数据库的接口。 9。GUI编程:Python支持GUI可以创建和移植到许多系统调用. 10.可嵌入: 你可以将Python嵌入到C/C++程序,让你的程序的用户获得"脚本化"的能力。 Python 环境搭建 本章节我们将向大家介绍如何在本地搭建Python开发环境。 Python可应用于多平台包括 Linux 和 Mac OS X. 你可以通过终端窗口输入 "python" 命令来查看本地是否已经安装Python以及Python的安装版本。 Unix (Solaris, Linux, FreeBSD, AIX, HP/UX, SunOS, IRIX, 等等。) Win 9x/NT/2000 Macintosh (Intel, PPC, 68K) OS/2 DOS (多个DOS版本) PalmOS Nokia 移动手机 Windows CE Acorn/RISC OS BeOS Amiga VMS/OpenVMS
本课程主要结合Python win32com包介绍Word(WPS文字)办公自动化的各种方法。相关内容包括Python语言基础、Word对象包括文档、Range、段落、节、域、页眉页脚、书签、表格、图形、图表、正则表达式等。使用win32com,VBA能做的Python也能做。相关套餐:Python+VBA办公自动化系列课程-CSDN程序员研修院 讲师:童大谦图书《代替VBA!用Python轻松实现Excel编程》和《对比VBA学Python 高xiao实现数据处理自动化》作者。 致力于Office和WPS Office办公自动化,提供VBA和Python全系列视频课程。熟悉Power BI, Python, R, SPSS, MATLAB等数据分析软件。有多年VB和.NET软件开发经验。
开发工具:PyCharm 2018。 Python内置模块:os、_thread、sys、codecs、re。 第三方模块:PyQt5、pyqt5-tools、PyPDF2、pywin32。 说明:pywin32模块在应用pip安装时,采用“pip install pywin32”命令进行安装,而在导入模块时,模块名称为win32com。 打开PyCharm开发环境,然后在主菜单上选择File→Open菜单项,在打开的Open File or Project对话框中,选择项目wordhelper。 单击OK按钮,将弹出 Open Project对话框,在该对话框,如果想要在新的窗体中打开项目,则选中Open in new window单选按钮,否则在当前窗体中打开,则选中Open in current window单选按钮。这里在新窗体中打开文件。 在右侧的Project面板的程序wordhelper.py是主文件  开发工具:PyCharm 2018。  Python内置模块:os、_thread、sys、codecs、re。  第三方模块:PyQt5、pyqt5-tools、PyPDF2、pywin32。 说明:pywin32模块在应用pip安装时,采用“pip install pywin32”命令进行安装,而在导入模块时,模块名称为win32com
下面通过COM让PythonWord建立连接实现Python操作Word批量生成文章,具体介绍请看下文: 需要做一些会议记录。总共有多少呢?五个地点x7个月份x每月4篇=140篇。虽然不很重要,但是140篇记录完全雷同也不好。大体看了一下,此类的记录大致分为四段。于是决定每段提供四种选项,每段从四选项里随机选一项,拼凑成四段文字,存成一个文件。而且要打印出来,所以准备生成一个140页的Word文档,每页一篇。 需要用到win32com模块(下载链接: http://sourceforge.net/projects/pywin32/files/ ), 通过COM让PythonWord建立连接
Python中的win32com模块可以用于与Windows应用程序进行交互。在使用模块时,可以使用Python来自动化Microsoft Office中的Word应用程序,以便在Python程序中创建、打开、修改和保存Word文档。 下面是一个使用win32com模块创建一个新Word文档的示例代码: ```python import win32com.client as win32 # 创建Word应用程序实例 word = win32.Dispatch('Word.Application') # 创建一个新的Word文档 doc = word.Documents.Add() # 在文档中添加文本 doc.Content.Text = 'Hello, world!' # 保存文档 doc.SaveAs('example.docx') # 关闭Word应用程序 word.Quit() 这个简单的代码片段创建了一个新的Word文档,向其中添加了一些文本,并将其保存到本地磁盘上。 需要注意的是,使用win32com模块时,需要在Windows上安装Microsoft Office套件,以便与Word等应用程序进行交互。