win32com操作word API精講 第七集 Range(五)字型格式精講

2023-01-29 18:01:35

本課程《win32com操作word API精講&專案實戰》視訊平臺以視訊為主,本平臺以文字為主,公眾號ID:一燈程式設計

本節課主要講解使用Range操作Font介面中的字型、字號、下劃線、刪除線、字型顏色、高亮及底紋顏色。
講解中所涉及到的檔案請自備,演示中,檔案內容共兩段,內容如下:

在娛樂圈,沈騰和馬麗是大家公認的最佳搭檔,事業上他們相伴十幾年,一起走紅毯,一起上春晚,一起拍電影,成就了惺惺相惜的友情。
記者:採訪前我專門給沈騰發了資訊,今天我要採訪馬麗,你想對她說什麼?他給我回復的你猜是什麼?

開啟使用者端和檔案

from win32com.client import Dispatch

client = Dispastch('word.Application')
client.Visible = 1

doc = client.Documents.Open('演示檔案.docx')

# 選中第一段,下方的所有演示都會操作該Range物件
rng = doc.Paragraphs(1).Range # 或者doc.Paragraphs.Item(1).Range

在之前的課程中,我們使用了以下的方式選中某個段落:

rng = doc.Range(0,0)
rng.MoveEnd(4,1)

這是鑑於課程尚未講解Paragraphs介面所採取的方案,實際開發中,哪種方式便利就使用哪種方式。在此,讓我們再次簡單重溫一下word程式設計物件集合的概念(這個概念對於初學者而言往往不容易領悟)。

word程式設計中,存在大量的集合,如Documents集合,Paragraphs集合,Words集合,Characters集合等等,集合用來管理word程式設計某種型別的資源,我們可以將集合比喻為公司的部門。每個部門管理各自的員工,Documents是所有檔案物件(Dcument)的集合,這個部門的員工等同於每個檔案物件,Documents可以很方便地統計當前共有多少個檔案,可隨時切換並操作某個檔案。

我們在選中演示檔案第一段時,就是用了Paragraphs物件集合,通過索引1選中了第一段,單個段落物件Paragraph表示某個段落,並提供了Range屬性,使用該屬性就可以建立一個Range物件從而表示選中了某範圍。

實際上,大部分資源型別的物件都有Range屬性,這極大地方便我們建立選中範圍以便操作資源。

操作字型、字號

# 獲取或設定字型,檔案中能展示出來的字型才能設定
rng.Font.Name
rng.Font.Name = '黑體'

# 獲取或設定字號,支援int和float,推薦使用float
rng.Font.Size
rng.Font.Size = 14.0

注意混合格式的問題,當前範圍內如何存在多種字號或字型,使用當前範圍的Range是獲取不到結果的,在對格式要求嚴格的開發專案中,我們需要使用別的方法來處理,具體方案在專案實戰部分hiu講到。

操作加粗、下劃線、刪除線

# 獲取或設定範圍內容的字型加粗
rng.Bold
rng.Bold = True # 賦值False可取消加粗

# 獲取或設定下劃線
# 使用rng.Font.UnderLine 也可以 兩者都有UnderLine的屬性
rng.UnderLine = 1 # 賦值0可取消下劃線

# 獲取或設定刪除線
# 賦值False可取消刪除線
rng.Font.StrikeThrough = True

下劃線說明:

通過常數來控制下劃線的型別,對應檔案:https://learn.microsoft.com/zh-cn/dotnet/api/microsoft.office.interop.word.wdunderline?view=word-pia

其中0表示無下劃線,7是預設的單下劃線。

字型顏色

rng.Font.Color = 255

Color僅支援int32的值,微軟在介面中內建了不少的顏色的int32數值,常用的要記得,如0為黑色,255為紅色。對應檔案:https://learn.microsoft.com/zh-cn/dotnet/api/microsoft.office.interop.word.wdcolor?view=word-pia

當我們使用自定義顏色時,不能直接將rgb值賦給Color,需要其轉換為int32才可以使用,具體操作辦法,公眾號ID:一燈程式設計,回覆rgb

Font介面也提供了ColorIndex來操作字型顏色,與Color的區別有二,一是前者只能使用內建的索引值來操作顏色,不能像Color一樣可使用自定義顏色,二是前者還可以用來控制字型邊框的顏色。

高亮顏色

高亮顏色是使用者端中的筆刷,像我們生活中使用的熒光筆一樣,在紙上做標記。

# 獲取或設定高亮顏色
rng.HighLightColorIndex = 7

在word的介面中,但凡帶有Index字樣的都是索引值,其最大的特點就是不支援自定義,這裡也一樣,我們只能使用指定的HighLightColorIndex,對應檔案: https://learn.microsoft.com/zh-cn/dotnet/api/microsoft.office.interop.word.wdcolorindex?view=word-pia

注意,HighLightColorIndex介面在Range介面下被封裝成屬性,在Font介面中並沒有這個屬性。高亮顏色是熒光筆在字上面劃過的效果,它會覆蓋下面要演示的底紋顏色

底紋顏色

# 獲取或設定底紋顏色
rng.Shading.BackgroundPatternColor = 255

底紋顏色不只有文字才有,所以它有一個獨立的介面為Shading,很巧,它又被封裝到了Range中成了眾多屬性之一。

BackgroundPatternColor和上面的Color一樣,僅支援int32記得,底紋顏色會被高亮覆蓋

ok,今天的內容就先到這,下節課我們接著將。有問題請留言、私信。