當前位置︰技術分享 > 技術參考 > 正文

用Python操作Word文檔2019-07-23 15:16:37 | 編輯︰hely | 查看︰ | 評論︰0

本文主要講解python中操作word的思路。

作者︰雲龍

本文主要講解python中操作word的思路。

一、Hello,world!

使用win32com需要安裝pypiwin32

pip install pypiwin32

推薦使用python的IDLE,交互方便

1、如何新建文檔

 

 

按F5運行,發現什麼效果都沒有, 這是因為Word被隱藏了。

2、如何顯示Word

app.Visible = 1

運行後,熟悉的Word界面出現。現在來輸入文字。

 

 

3、如何輸入

我們在Word中輸入文字時,一般會先使用鼠標點擊需要輸入文字的位置,這個過程是獲得了光標焦點。

當我們需要替換某些文字時,首先會選中某些文字,然後再輸入、被選擇的文字呈現出灰色的背景,表示被選中了。

光標焦點和選擇範圍在Word中,都是Selection。什麼都沒選擇的光標焦點,和選擇了整片文章的選擇範圍,代表了Selection的最小和最大範圍。

這也是為什麼整個Word中只能有一個Selection的原因。因為光標或者選擇範圍就只能有一個。

 

 

此時,s的範圍為'Hello, world!'這句話的選擇區域。

 

 

能如此方便的調用Word,得益于其底層的COM(組件對象模型)可以被任意語言調用。

Selection是Word對象模型中的類,此處的s是它的對象(實例)。

4、如何查看選擇區域是什麼

s.Text可以查看或者設置s選擇區域的文本。Word對象模型中很多對象都有默認屬性,Text就是Selection的默認屬性,類似python的__str__方法。運行s()調用s的默認屬性,此處等于于運行了s.Text。

s()

控制台顯示,s的範圍為'Hello, world!'這句話的選擇區域。

 

 

二、對Word對象模型的簡單理解

Word中最重要的類(對象)有以下幾個。

1、Application對象︰Word應用。Application包含了菜單欄、工具欄、命令以及所有文檔等。

 

 

2、Document對象︰文檔。可以有多個Document,就像Word可以打開多個文檔。

使用下列代碼新建文檔或者打開文檔

 

 

3、Selection對象︰選區︰代表當前窗口的選區。它可以是文檔中的選擇(高亮)區域,也可以是插入點(如果沒有什麼被選中)。同一時間只能激活一個Selection。

如何獲得

s = app.Selection

在Word中,按下Alt+F11打開宏編輯器

 

 

然後按下F2打開對象瀏覽器

 

 

輸入selection並回車,發現成員一列中完全匹配Selection的只有4個類,這表示只有這些類的Selection屬性可以返回Selection對象(如圖)。

 

 

Application我們前面介紹過,其它的類可以用同樣的方法查詢如何獲得。

如何使用Selection輸入

 

 

Text和TypeText的不同在于完成後的選區︰

Text︰輸入的文本(前例中選區為'Hello, world!');

TypeText︰文本後的插入點(前例中選區為!後的插入點)。

如何變更Selection

 

 

 

 

所有能獲得Selection的類

4、Range對象︰連續區域。Range表示一個連續區域。Range由Start和End位置定義,用來區分文檔的不同部分。Range是獨立于Selection的。不管Selection是否改變,都可以定義和操作Range。文檔中可以定義多個Range。這個連續區域同樣可以小到一個插入點,大到整個文檔。Selection有Range屬性,而Range沒有Selection屬性。

當使用Range(Start, End)方法來指定文檔的特定範圍時。文檔的第一個字符位置為0,最後一個字符的位置和文檔的字符總數相等。不提供參數時代表選擇所有範圍。

如何獲得

 

 

Word中有很多對象的Range屬性都能返回Range對象,請在Word-宏編輯器-對象瀏覽器中自己查詢。

如何使用

因為本文僅使用Selection就可以達到效果,Range的很多屬性和方法和Selection是類似的。

5、Font對象︰字體。包含對象的字體屬性(字體名稱、字號、顏色等)。

如何獲得

 

 

同樣,其余獲得方法可在Word-宏編輯器-對象瀏覽器中查詢。

如何使用

 

 

ParagraphFormat對象︰段落格式。用來設置段落格式,包括對齊、縮進、行距、邊框底紋等。

如何獲得

 

 

同樣,其余獲得方法可在Word-宏編輯器-對象瀏覽器中查詢。

如何使用

 

 

7、PageSetup對象︰頁面設置。代表所有的頁面設置屬性,包括左邊距,底邊距,紙張大小等等。

如何獲得

 

 

同樣,其余獲得方法可在Word-宏編輯器-對象瀏覽器中查詢。

如何使用

 

 

8、Styles對象︰樣式集。Styles包含指定文檔中內置和用戶定義的所有樣式,它返回一個樣式集。其中的每個樣式的屬性包括字體、 字形、 段落間距等。如常見的正文、頁眉、標題1樣式。

如何獲得

 

 

如何使用

 

 

Styles的返回參數,標題1、標題2、標題3分別為-2、-3、-4,頁眉為-32,標題為-63,其他見Styles文檔

三、解決問題思路

因為有很多功能,在文檔中難以直接找到,需要使用如下方法。

1、把想實現的功能,使用word的錄制宏,在宏編輯器里查看VBA代碼,從而了解大概使用什麼方法。

2、使用在線的 .NET API,從而了解詳細的語法

3、如果不知道從哪獲得實現該功能的對象,則可以使用word宏編輯器的對象瀏覽器(F2鍵),具體見前文Selection部分

4、使用Python的IDLE進行實時交互

 

 

然後輸入自己想嘗試的對象屬性或方法。

四、實例︰格式化word文件為最新的公文國家標準

只進行兩個部分的設置,一是頁面設置、二是頁碼設置

 

上一篇︰十五個點,理解Apache Kafka 深入理解 Spark SQL 的 Catalyst 優化器下一篇︰