python win32com

要使用Python控制MS Word,您需要先安裝win32com套件,這個套件可以到 http://sourceforge.net/projects/pywin32/ 找到。本文假設您已經正確安裝win32com及相關套件,所以將不再針對此部分多做說明。

毫無疑問的,您需要先import win32com模組才能進行Word的控制。

import win32com
from win32com.client import Dispatch, constants

接著,要讓我們的Python程式和MS Word建立起連結。

msword = Dispatch(‘Word.Application‘)

用Dispatch()的方式將會啟動MS Word。不過,如果您已經有執行MS Word,則此方式只會與現存的MS Word建立連結。如果您強烈希望能夠有一個新的MS Word程式出現,可用下面的方式:

msword = DispatchEx(‘Word.Application‘)

此時您會發現畫面上沒有任何MS Word出現,其實他已經在背後執行了。您可以透過工作管理員來查看是否有一個名為"WINWORD.EXE"的Process。不產生畫面的好處是您可 以在背景來處理您要進行的工作。如果您想要看看到底是不是真的有成功的啟動MS Word,請設定Visible屬性。

msword.Visible = 1 # 1表示要顯示畫面,若為0則不顯示畫面。您可以隨時的更改此屬性。

除了不顯示畫面外,您也許還會希望不要顯示一些警告訊息。此時請設定DisplayAlerts屬性:

msword.DisplayAlerts = 0 # 1表示要顯示訊息,0則會隱藏訊息。

若您真的有把畫面叫出來,您或許會發現此時的畫面上是沒有任何文件開啟的。沒錯!前面的動作只是幫助我們啟動Word並且建立連結,接著我們就要來開啟文件了。我們可以開啟已經存在的文件,或者是新增一個空白文件。

doc  = msword.Documents.Open(FileName="xxx.doc") # 開啟一個名為xxx.doc的文件。
newDoc  = msword.Documents.Add()   # 開啟一個新的文件。
msword.Quit()      # 關閉MS Word.

當然,除了開啟檔案或新建文件,您也可以存檔或者控制這些文件。

docCnt  = msword.Documents.Count  # 取得目前開啟文件的數量。
doc  = msword.Documents[n]   # 取得第n個文件的物件,以便後面的控制。
doc.Activate()     # 將文件設定為主要工作文件。
doc.PrintOut()     # 列印文件
doc.Save()     # 存檔
doc.SaveAs(‘xxx.doc‘)    # 另存新檔
doc.Undo(n)     # 回復前n次的動作

取得與文件的聯繫,接著我們可以對他進行編輯。不過,我們要能夠先取得編輯的控制權。透過Document的Range()函式,我們可以取得MS Word的Range物件。

range = doc.Range(0, 0) # 取得Range物件,範圍為文件的最開頭。
range = doc.Range()  # 取得Range物件,範圍為文件的最尾端。
range = doc.Range(doc.Content.Start, doc.Content.End) # 取得Range物件,範圍整份文件。

有了Range物件,我們就可以開始進行編輯了。

range.InsertBefore(‘在range前面插入的文字‘)
range.InsertAfter(‘在range後面插入的文字‘)
select = range.Select()  # 將range的範圍全部選取。並且取得Selection物件。

如果要設定Style,可以透過range物件的Style屬性來設定。

range.Style = constants.wdStyleHeading1  # 設定style為Heading 1
range.Style = constants.wdStyleHeading2  # 設定style為Heading 2
range.Style = constants.wdStyleHeading3  # 設定style為Heading 3
range.Style = constants.wdStyleHeading4  # 設定style為Heading 4
range.Style = constants.wdStyleHeading5  # 設定style為Heading 5
range.Style = constants.wdStyleHeading6  # 設定style為Heading 6
range.Style = constants.wdStyleHeading7  # 設定style為Heading 7
range.Style = constants.wdStyleHeading8  # 設定style為Heading 8
range.Style = constants.wdStyleHeading9  # 設定style為Heading 9
range.ParagraphFormat.Alignment = constants.wdAlignParagraphLeft # 設定段落為靠左
range.ParagraphFormat.Alignment = constants.wdAlignParagraphRight # 設定段落為靠右
range.ParagraphFormat.Alignment = constants.wdAlignParagraphCenter # 設定段落為置中
range.ParagraphFormat.Alignment = constants.wdAlignParagraphJustify # 設定段落為左右對齊
range.Style.Font.Name = "Arial"   # 設定字型為Arial
range.Style.Font.Name = "Time New Roman" # 設定字型為Time New Roman
range.Style.Font.Name = "標楷體"       # 設定字型為標楷體
range.Style.Font.Color = 0xFF0000  # 設定字型的顏色為Blue
range.Style.Font.Color = 0x00FF00  # 設定字型的顏色為Green
range.Style.Font.Color = 0x0000FF  # 設定字型的顏色為Red
range.Style.Font.Bold = 1   # 設定字型為粗體字
range.Style.Font.Italic = 1   # 設定字型為斜體字
range.Style.Font.Underline = 1   # 為字型加底線
range.Style.Font.Shadow = 1   # 為字型加陰影
range.Style.Font.Outline = 1   # 為字型加外框

如果要插入一個表格,可以用下面的方式來做。

table = doc.Tables.Add(range, 3, 4)   # 新增一個3x4表格
table.Cell(1,1).Range.InsertAfter(‘Some text‘)  # 新增文字到cell(1,1)
table.Cell(1,1).Range.Font.Name = "Arial"  # 設定字型為Arial
table.Cell(1,1).Range.Font.Color = 0xFF0000  # 設定字型為blue
table.Rows.Add()     # 新增一個Row
table.Columns.Add()     # 新增一個Column
时间: 12-14

python win32com的相关文章

python win32com 读取带密码的excel

之前用到的win32com读取带密码excel的相关内容,今天刚好准备整理下,突然发现方法又不灵了. 以下为错误示范: # 已知excel密码去除 def del_password(filename, password): excel = DispatchEx("Excel.Application") # 启动excel excel.Visible = True # 可视化 excel.DisplayAlerts = False # 是否显示警告 wb = excel.Workbook

pyhon/excel python导出到excel时的中文乱码问题

昨儿利用python+win32com将网页的表单导出到本地excel,遇到了输出乱码问题,解决方法: 将x改为x.decode('utf-8') setCall('sheet1',row,col,x.decode('utf-8')) 我的部分源码: self.xlBook = self.xlApp.Workbooks.Add() def setCell(self,sheet,row,col,value):#设置单元格的数据 "Set value of one cell" sht =

python处理word文件:win32com用法详解

目标:用python处理doc文件 方法:引入win32com模块 ************************************************************************** 一.安装 ************************************************************************** 首先要先下载安装win32com模块(起先在linux下装不成功,后在windows下面成功了...) 下载地址:http

python使用win32com的心得

python可以使用一个第三方库叫做win32com达到操作com的目的, 我是安装了ActivePython的第三方库,从官网下载了安装包,该第三方库几乎封装了所有python下面的win32相关的操作,例如win32api,win32gui等等,可以说是比较齐全的了,下载地址可以自行百度获取. 主要是有个项目可能要用到ppt转换成视频的功能. 之后在想使用com操作excel还有word,ppt的时候,相信大部分人跟我一样,都是搜索python如何操作ppt,或者win32com操作offi

Python 使用 win32com 模块对word文件进行操作

what's the win32com 模块 win32com 模块主要为 Python 提供调用 windows 底层组件对 word .Excel.PPT 等进行操作的功能,只能在 Windows 环境下使用,并且需要安装 office 相关软件才行(WPS也行). 使用 win32com 模块主要是因为 Python 针对 word 文档操作的第三方库相对较少并且功能较弱,Python 有针对 .docx 后缀文件的第三方库如 python-docx.pydocx等等,但是没有针对 .do

python 使用win32com 操作excel

举例1 import win32com.client as win32 xl = win32.Dispatch('Excel.Application')xl.Visible = Truexl.Workbooks.Add() xlBook = xl.Workbooks(1)xlSheet = xl.Sheets(1)xlSheet.Cells(1,1).Value = 'What shall be the number of thy counting?'xlSheet.Cells(2,1).Val

python调用win32com.client的GetObject查找进程信息及服务信息

为何不用wmi呢?因为执行很慢,为啥不用winreg?因为winreg在批量获取及遍历服务方面很不方便,于是采用这方法 该方法同命令行下的wmic执行 获取服务信息 #coding=utf8 from win32com.client import GetObject mywmi = GetObject("winmgmts:") objs = mywmi.InstancesOf("Win32_Service") for obj in objs: print obj.P

使用python操作word win32com

研究一下,利用win32com操作 word WORD中最重要的概念有几个:Application - 这个毫无疑问是我们的WORD应用程序Document - 这个就是一个打开的文档对象Range - 基本上所有对象都是有Range属性的,而这也为我们排版提供了极大的便利...Paragraph - 顾名思义,这个是段落的意思,也就是我们文档中的一个段内容(可以是文本.图片等).Section - 怎么才能插入一个新的页,然后在新页上开始输出内容...ParagraphFormat - 这个是

Python库win32com的下载地址

http://sourceforge.net/projects/pywin32/files/pywin32/ www.zhaozhiyong.cn