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
python win32com的更多相关文章
- Python win32com模块 合并文件夹内多个docx文件为一个docx
Python win32com模块 合并文件夹内多个docx文件为一个docx #!/usr/bin/env python # -*- coding: utf-8 -*- from win32com. ...
- 线程中调用python win32com
在python的线程中,调用win32com.client.Dispatch 调用windows下基于COM组件的应用接口, 需要在调用win32com.client.Dispatch前,调用pyth ...
- python win32com.client
搜集的一些关于win32com.client操作office的相关用法 #创建 #word w = win32com.client.Dispatch("Word.Application&qu ...
- python win32com 读取带密码的excel
之前用到的win32com读取带密码excel的相关内容,今天刚好准备整理下,突然发现方法又不灵了. 以下为错误示范: # 已知excel密码去除 def del_password(filename, ...
- Python~win32com~Excel
import win32com.client #w=win32com.client.Dispatch("Word.Application") #w.Visible=1 o=win3 ...
- python+win32--com实现excel自动化
import win32com APP_TYPE = 'Excel.Application' xlBlack,xlRed,xlGray,xlBlue = 1,3,15,41 xlBreakFull ...
- python win32com 处理excle 写一个公共的类
利用win32com处理excle,这样可以不管文件是老的xls还是新的xlsx格式,非常方便. 类的源码如下: import win32com.client as win32 class easyE ...
- Python办公自动化之Excel做表自动化:全网最全,看这一篇就够了!
文章目录 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手.很多已经做案例的人,却不知道如何去学习更加高深的知识.那么针对这三类人,我给大家 ...
- [转载]python操作excel使用win32com
原文链接:http://blog.163.com/yang_jianli/blog/static/16199000620138532243782/ 使用COM接口,直接操作EXCEL(只能在Win上) ...
随机推荐
- 20170220-coroutine
协程 coroutine 最近频繁的听说到 "协程" 这个词,花了一段时间肤浅的研究了一下.对于 "它是一个什么东西" 有了一个大概的了解. from wiki ...
- 基于vue开发的在线付费课程应用
最近在弄一个付费课程的应用,主要有微信登录,支付和自定义分享,在开发过程中遇到的坑,这里做一下记录 文章主要有以下几点 使用库简介 微信登录解决 微信支付解决 微信自定义分享解决 页面前进后退数据状态 ...
- zookeeper和dubbo安装与搭建(2)
Zookeeper+Dubbo安装与搭建(2) (原创:黑小子-余) 一.环境配置:zookeeper3.6.0 + dubbo3.5.4 + maven3.6.1 + jdk1.8 + tomcat ...
- psql的jsonb操作--存储对象/对象数组
1. 建表 create table demo( id serial NOT NULL PRIMARY KEY, name ), info JSONB ); 2.存储对象操作 2.1添加 insert ...
- ASP.NET Core中的Http缓存
ASP.NET Core中的Http缓存 Http响应缓存可减少客户端或代理对web服务器发出的请求数.响应缓存还减少了web服务器生成响应所需的工作量.响应缓存由Http请求中的header控制. ...
- 峰哥说技术:07-SpringBoot 正好Thymeleaf视图
Spring Boot深度课程系列 峰哥说技术—2020庚子年重磅推出.战胜病毒.我们在行动 07 峰哥说技术:SpringBoot 正好Thymeleaf视图 Spring Boot视图介绍 虽然 ...
- js的变量——基本类型保存在栈中,引用类型保存在堆中
javascript的基本类型:Undefined,Null,Boolean,Number,String 引用类型:Object,Array,Function 基本类型值在内存中占据固定大小,被保存在 ...
- seo搜索优化技巧01-seo外链怎么发?
在seo搜索优化中,seo外链的作用并没有早期的作用大了.可是高质量的外链对关键词的排名还是很重要的.星辉信息科技对seo外链怎么发以及seo外链建设中的注意点进行阐述. SEO外链如何做 SEO高质 ...
- 前端Tips#6 - 在 async iterator 上使用 for-await-of 语法糖
视频讲解 前往原文 前端Tips 专栏#6,点击观看 文字讲解 本期主要是讲解如何使用 for-await-of 语法糖进行异步操作迭代,让组织异步操作的代码更加简洁易读. 1.场景简述 以下代码中的 ...
- si4745 FM-AM-SW 音量控制芯片 驱动详解
在论坛上看到有人发这个dsp 芯片,仔细看了下,发现功能正合我意,网上能找到的资料(源码)不多 软件环境:linux4.1.36 arm-linux-gcc 4.3.2 实现功能:自动搜台,上一台, ...