一、Hello,world!
使用win32com需要安裝pypiwin32
pip install Pypiwin32
推薦使用python的IDLE,交互方便
1.如何新建文檔
按F5運(yùn)行,發(fā)現(xiàn)什么效果都沒(méi)有, 這是因?yàn)閃ord被隱藏了。
2.如何顯示W(wǎng)ord
app.Visible = 1
運(yùn)行后,熟悉的Word界面出現(xiàn)。現(xiàn)在來(lái)輸入文字。
3.如何輸入
我們?cè)赪ord中輸入文字時(shí),一般會(huì)先使用鼠標(biāo)點(diǎn)擊需要輸入文字的位置,這個(gè)過(guò)程是獲得了光標(biāo)焦點(diǎn)。
當(dāng)我們需要替換某些文字時(shí),首先會(huì)選中某些文字,然后再輸入、被選擇的文字呈現(xiàn)出灰色的背景,表示被選中了。
光標(biāo)焦點(diǎn)和選擇范圍在Word中,都是Selection。什么都沒(méi)選擇的光標(biāo)焦點(diǎn),和選擇了整篇文章的選擇范圍,代表了Selection的最小和最大范圍。
這也是為什么整個(gè)Word中只能有一個(gè)Selection的原因。因?yàn)楣鈽?biāo)或者選擇范圍就只能有一個(gè)。此時(shí),s的范圍為“Hello, world!”這句話的選擇區(qū)域。
能如此方便地調(diào)用Word,得益于其底層的COM(組件對(duì)象模型)可以被任意語(yǔ)言調(diào)用。
Selection是Word對(duì)象模型中的類,此處的s是它的對(duì)象(實(shí)例)。
4.如何查看選擇區(qū)域是什么
s.Text可以查看或者設(shè)置s選擇區(qū)域的文本。Word對(duì)象模型中很多對(duì)象都有默認(rèn)屬性,Text就是Selection的默認(rèn)屬性,類似Python的__str__方法。運(yùn)行s()調(diào)用s的默認(rèn)屬性,此處等于運(yùn)行了s.Text。
s()
控制臺(tái)顯示,s的范圍為“Hello, world!”這句話的選擇區(qū)域。
二、對(duì)Word對(duì)象模型的簡(jiǎn)單理解
Word中最重要的類(對(duì)象)有以下幾個(gè)。
1. Application對(duì)象:Word應(yīng)用。Application包含了菜單欄、工具欄、命令以及所有文檔等。
2. Document對(duì)象:文檔??梢杂卸鄠€(gè)Document,就像Word可以打開多個(gè)文檔。
使用下列代碼新建文檔或者打開文檔。
3. Selection對(duì)象:選區(qū):代表當(dāng)前窗口的選區(qū)。它可以是文檔中的選擇(高亮)區(qū)域,也可以是插入點(diǎn)(如果沒(méi)有什么被選中)。同一時(shí)間只能激活一個(gè)Selection。
如何獲得
s = app.Selection
在Word中,按下Alt+F11打開宏編輯器,然后按下F2打開對(duì)象瀏覽器,輸入selection并回車,發(fā)現(xiàn)成員一列中完全匹配Selection的只有4個(gè)類,這表示只有這些類的Selection屬性可以返回Selection對(duì)象,Application可以用同樣的方法查詢?nèi)绾潍@得。
4.Range對(duì)象:連續(xù)區(qū)域。Range表示一個(gè)連續(xù)區(qū)域。Range由Start和End位置定義,用來(lái)區(qū)分文檔的不同部分。Range是獨(dú)立于Selection的。不管Selection是否改變,都可以定義和操作Range。文檔中可以定義多個(gè)Range。這個(gè)連續(xù)區(qū)域同樣可以小到一個(gè)插入點(diǎn),大到整個(gè)文檔。Selection有Range屬性,而Range沒(méi)有Selection屬性。
當(dāng)使用Range(Start, End)方法來(lái)指定文檔的特定范圍時(shí),文檔的第一個(gè)字符位置為0,最后一個(gè)字符的位置和文檔的字符總數(shù)相等。不提供參數(shù)時(shí)代表選擇所有范圍。
5.PageSetup對(duì)象:頁(yè)面設(shè)置。代表所有的頁(yè)面設(shè)置屬性,包括左邊距、底邊距、紙張大小等等。
如何獲得
同樣,其余獲得方法可在Word-宏編輯器-對(duì)象瀏覽器中查詢。
如何使用
6. Styles對(duì)象:樣式集。Styles包含指定文檔中內(nèi)置和用戶定義的所有樣式,它返回一個(gè)樣式集。其中的每個(gè)樣式的屬性包括字體、 字形、 段落間距等。如常見的正文、頁(yè)眉、標(biāo)題1樣式。
如何獲得
如何使用
Styles的返回參數(shù),標(biāo)題1、標(biāo)題2、標(biāo)題3分別為-2、-3、-4,頁(yè)眉為-32,標(biāo)題為-63,其他見Styles文檔
三、解決問(wèn)題思路
因?yàn)橛泻芏喙δ?,在文檔中難以直接找到,需要使用如下方法。
1.把想實(shí)現(xiàn)的功能,使用Word的錄制宏,在宏編輯器里查看VBA代碼,從而了解大概使用什么方法。
2.使用在線的 .NET API,從而了解詳細(xì)的語(yǔ)法。
3.如果不知道從哪獲得實(shí)現(xiàn)該功能的對(duì)象,則可以使用Word宏編輯器的對(duì)象瀏覽器(F2鍵)。
4.使用Python的IDLE進(jìn)行實(shí)時(shí)交互,然后輸入自己想嘗試的對(duì)象屬性或方法。
四、實(shí)例:格式化Word文件為最新的公文國(guó)家標(biāo)準(zhǔn)
只進(jìn)行兩個(gè)部分的設(shè)置,一是頁(yè)面設(shè)置,二是頁(yè)碼設(shè)置。