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

what's the win32com 模块

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

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

importwin32com#最常用的模块其实是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文档

插入文字

myRange =doc.Range(0,0)

myRange.InsertBefore('Hello word')

针对关键词的操作

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

文字替换

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表示全部替换)'''

更改文字颜色、背景色

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

转码操作

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

下面举个 docx 转 pdf 例子

from win32com importclient as wc

word= 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'''

转码的码

你可能感兴趣的:(python,操作word教程)