win32com操作word API精讲 第七集 Range(五)字体格式精讲 - 一灯编程
source link: https://www.cnblogs.com/mooremok/p/17072935.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
本课程《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,今天的内容就先到这,下节课我们接着将。有问题请留言、私信。
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK