对于字符序列中的文本,可以使用3种方法设置文本的颜色,包括RGB着色、索引着色和用主题颜色着色等。[大谦Excel,dqexcel点com]
RGB着色
进行RGB着色,需要首先获取Range对象的TextColor属性,它返回一个ColorFormat对象,通过设置ColorFormat对象的RGB属性的值进行RGB着色。给RGB属性赋值时,可以有4种赋值方式,包括设置一个十六进制颜色值、一个表示颜色的常数、一个表示颜色的整数或者指定给定颜色的红色、绿色和兰色分量。
下面定义文档中的一个字符序列,获取其Font对象,用它的TextColor属性获取ColorFormat对象,设置其RGB属性的值为0x0000FF。这是一个十六进制数,0x后面6个数每2个一组分别表示颜色的兰色、绿色和红色分量。0x0000FF表示的颜色为红色。
>>> doc=app.Documents.Open('D:\\test2.docx') #打开文档
>>> rng=doc.Range(Start=20,End=40) #定义字符序列
>>> fnt=rng.Font #获取Font对象
>>> fnt.TextColor.RGB=0x0000FF #设置文字的颜色为红色
设置效果如图3-7所示,为了突出效果,将字体大小设置为小二号。表11-1中列出了很多常见颜色的16进制数。
图3-7 设置字符序列的颜色为红色
进行RGB着色的第2种方式是将RGB属性的值设置为表示指定颜色的常数,如下面constants.wdColorRed表示红色。表11-1中列出了表示常见颜色的常数。
>>> fnt.TextColor.RGB=constants.wdColorRed
设置效果如图3-7所示。
进行RGB着色的第3种方式是将RGB属性的值设置为表示指定颜色的整数,如下面255表示红色。表3-1中列出了表示常见颜色的整数。
>>> fnt.TextColor.RGB=255
设置效果如图3-7所示。
表3-1 常见颜色的16进制数、常数、整数和RGB分量表示
| 颜色 | 常数名称 | 16进制数 | 整数 | R | G | B |
|---|---|---|---|---|---|---|
| 黑色 | wdColorBlack | 0x000000 | 0 | 0 | 0 | 0 |
| 兰色 | wdColorBlue | 0x0000FF | 16711680 | 0 | 0 | 255 |
| 深红色 | wdColorBrown | 0x993300 | 13209 | 153 | 51 | 0 |
| 绿色 | wdColorGreen | 0x008000 | 32768 | 0 | 128 | 0 |
| 橙色 | wdColorOrange | 0xFF6600 | 26367 | 255 | 102 | 0 |
| 粉色 | wdColorPink | 0xFF00FF | 16711935 | 255 | 0 | 255 |
| 红色 | wdColorRed | 0xFF0000 | 255 | 255 | 0 | 0 |
| 青色 | wdColorTeal | 0x008080 | 8421376 | 0 | 128 | 128 |
| 紫色 | wdColorViolet | 0x800080 | 8388736 | 128 | 0 | 128 |
| 白色 | wdColorWhite | 0xFFFFFF | 16777215 | 255 | 255 | 255 |
| 黄色 | wdColorYellow | 0xFFFF00 | 65535 | 255 | 255 | 0 |
进行RGB着色的第4种方式是用给定的红色、绿色和兰色分量指定颜色,实际是用各分量组成一个整数,然后将该数设置给RGB属性。
>>> r=255 #红色
>>> g=0
>>> b=0
>>> bgr=(b,g,r) #用颜色分量组成元组,注意反序
>>> xv='%02x%02x%02x' % bgr #16进制表示的字符串
>>> iv=int(xv,16) #转换为整数
>>> fnt.TextColor.RGB=iv #将整数设置给RGB属性
设置效果如图3-7所示。
索引着色
索引着色是先给定一个颜色查找表,如表3-2所示,表中给定一些颜色,每个颜色有索引号和常数表示,使用索引着色时直接指定颜色为颜色查找表中某个颜色的索引号。
表3-2 颜色查找表
| 颜色 | 索引号 | 常数 | 颜色 | 索引号 | 常数 |
|---|---|---|---|---|---|
| 自动配色 | 0 | wdAuto | 深蓝色 | 9 | wdDarkBlue |
| 黑色 | 1 | wdBlack | 青色 | 10 | wdTeal |
| 蓝色 | 2 | wdBlue | 绿色 | 11 | wdGreen |
| 青绿色 | 3 | wdTurquoise | 紫色 | 12 | wdViolet |
| 鲜绿色 | 4 | wdBrightGreen | 深红色 | 13 | wdDarkRed |
| 粉红色 | 5 | wdPink | 深黄色 | 14 | wdDarkYellow |
| 红色 | 6 | wdRed | 50% 灰色底纹 | 15 | wdGray50 |
| 黄色 | 7 | wdYellow | 25% 灰色底纹 | 16 | wdGray25 |
| 白色 | 8 | wdWhite | 清除 | 0 | wdNoHighlight |
给Range对象中文本的内容进行索引着色,设置其Font属性返回的Font对象的ColorIndex属性的值为表4 中某个颜色的索引值或常数值即可。
>>> doc=app.Documents.Open('D:\\test2.docx') #打开文档
>>> rng=doc.Range(Start=20,End=40) #定义字符序列
>>> fnt=rng.Font #获取Font对象
>>> fnt.ColorIndex=constants.wdRed #或6
设置效果如图3-7所示。
使用主题颜色
Word提供了10余种主题颜色,如表3-3中所示。使用这些主题颜色,可以很方便地给图形着色。
表3-3 Word中的主题颜色
| 常 数 | 值 | 颜 色 |
|---|---|---|
| wdNotThemeColor | -1 | 无颜色 |
| WdThemeColorMainDark1 | 0 | 深色主色1 |
| wdThemeColorMainLight1 | 1 | 浅色主色1 |
| wdThemeColorMainDark2 | 2 | 深色主色2 |
| wdThemeColorMainLight2 | 3 | 浅色主色2 |
| wdThemeColorAccent1 | 4 | 强调文字颜色1 |
| wdThemeColorAccent2 | 5 | 强调文字颜色2 |
| wdThemeColorAccent3 | 6 | 强调文字颜色3 |
| wdThemeColorAccent4 | 7 | 强调文字颜色4 |
| wdThemeColorAccent5 | 8 | 强调文字颜色5 |
| wdThemeColorAccent6 | 9 | 强调文字颜色6 |
| wdThemeColorHyperlink | 10 | 超链接颜色 |
| wdThemeColorHyperlinkFollowed | 11 | 已访问的超链接颜色 |
| wdThemeColorBackground1 | 12 | 背景色1 |
| wdThemeColorText1 | 13 | 文本颜色1 |
| wdThemeColorBackground2 | 14 | 背景色2 |
| wdThemeColorText2 | 15 | 文本颜色2 |
给Range对象中文本的内容用主题颜色进行着色,其Font属性返回Font对象,用Font对象的TextColor属性返回ColorFormat对象,将该对象的ObjectThemeColor属性的值设置为表11-3中某个颜色的值或常数。
>>> doc=app.Documents.Open('D:\\test2.docx') #打开文档
>>> rng=doc.Range(Start=20,End=40) #定义字符序列
>>> fnt=rng.Font #获取Font对象
>>> fnt.TextColor.ObjectThemeColor=constants.wdThemeColorAccent1 #或4
将定义字符序列内的文字设置为兰色。