2

win32com操作word API精讲 第七集 Range(五)字体格式精讲 - 一灯编程

 1 year ago
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,今天的内容就先到这,下节课我们接着将。有问题请留言、私信。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK