win32com操作word API精讲 第七集 Range(五)字体格式精讲
本课程《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,今天的内容就先到这,下节课我们接着将。有问题请留言、私信。
win32com操作word API精讲 第七集 Range(五)字体格式精讲的更多相关文章
- win32com操作word(2):常用用法
一.对象的位置关系: 1.Range属性位于(部分): Selection__Section__Cell__Paragraph__Table__Bookmark__Comment__Row__List ...
- win32com操作word(1):几个重要的对象(28.35)
Pywin32模块为python封装了操作windows底层API函数的功能.而win32com是Pywin32下面的一个模块,专门负责操作com组件. 由于office工具(Word.Excel等) ...
- win32com操作word(3):导入VBA常量
导入VBA常量方法:http://blog.sina.com.cn/s/blog_a73687bc0101k8x8.html 我们之前说过,win32com组件为python提供处理COM组件(.dl ...
- python操作word(改课文格式)【最终版】
python操作word的一些方法,前面写了一些感悟,有点跑题,改了下题目,方便能搜索到.心急的可以直接拉到最后看代码,我都加了比较详细的注释. 从8.3号早上9点,到8.8号下午5点半下班,终于把这 ...
- python操作word入门
1.安装pywin32 http://sourceforge.net/projects/pywin32 在files里去找适合你的python版本.截止此文,最新版本是pywin32-219快捷路径: ...
- Python操作Word:常用对象介绍
前面已经介绍过了试用win32com类库来进行Word开发,系列文章<Python操作Word>是继承了前面的文章,所以,你应该先查看前面的文章,其实只有两篇,文章地址列在最下面的参考资料 ...
- python操作word、ppt的详解
python使用win32com的心得 python可以使用一个第三方库叫做win32com达到操作com的目的, 我是安装了ActivePython的第三方库,从官网下载了安装包,该第三方库几乎 ...
- c#操作word表格
http://www.webshu.net/jiaocheng/programme/ASPNET/200804/6499.html <% if request("infoid" ...
- OpenXml操作Word的一些操作总结.无word组件生成word.
OpenXml相对于用MS提供的COM组件来生成WORD,有如下优势: 1.相对于MS 的COM组件,因为版本带来的不兼容问题,及各种会生成WORD半途会崩溃的问题. 2.对比填满一张30多页的WOR ...
- OpenXml操作Word的一些操作总结.
OpenXml操作Word的一些操作总结. OpenXml相对于用MS提供的COM组件来生成WORD,有如下优势: 1.相对于MS 的COM组件,因为版本带来的不兼容问题,及各种会生成WORD半途会崩 ...
随机推荐
- 【Serverless】云函数微信小程序
简介 什么是AppGallery Connect云函数 云函数是一项Serverless计算服务,提供FaaS(Function as a Service)能力,可以帮助开发者大幅简化应用开发与运维相 ...
- 题解 UVA439 骑士的移动 Knight Moves
前言 最近板子题刷多了-- 题意 一个 \(8\times 8\) 的棋盘,问马从起点到终点的最短步数为多少. \(\sf Solution\) 要求最短路径嘛,显然 bfs 更优. 读入 这个读入处 ...
- kubelet忽然不可用
原因,有可能机器的cpu信息有变化(扩容或者缩容)解决办法: 删掉/opt/var/lib/kubelet目录下(或者/data/lib/kubelet)cpu_manager_state文件 然后m ...
- Aspose.Cell篇章3,设置写入到Excel文件的各种样式及输出
Aspose.Cell的Style.Number设置全部设置 /// <summary> /// 单元格样式编号 /// 0 General General /// 1 Decimal 0 ...
- 全球名校AI课程库(38)| 马萨诸塞大学 · 自然语言处理进阶课程『Advanced Natural Language Processing』
课程学习中心 | NLP课程合辑 | 课程主页 | 中英字幕视频 | 项目代码解析 课程介绍 自然语言处理 (NLP) 是一门关于如何教计算机理解人类语言的工程艺术和科学.NLP 作为一种人工智能技术 ...
- 孙荣辛|大数据穿针引线进阶必看——Google经典大数据知识
大数据技术的发展是一个非常典型的技术工程的发展过程,荣辛通过对于谷歌经典论文的盘点,希望可以帮助工程师们看到技术的探索.选择过程,以及最终历史告诉我们什么是正确的选择. 何为大数据 "大 ...
- 【题解】CF631B Print Check
题面传送门 解决思路: 首先考虑到,一个点最终的情况只有三种可能:不被染色,被行染色,被列染色. 若一个点同时被行.列染色多次,显示出的是最后一次被染色的结果.所以我们可以使用结构体,对每一行.每一列 ...
- 嵌入式-C语言基础:二维数组
二维数组的每个元素都是一个一维数组,例如int arr[2][3]={{1,2,3},{4,5,6}}; 下面通过几个例子来对二维数组进行深入了解:二维数组可以看作是一个父数组,他的每个元素都是一个一 ...
- 自学 TypeScript 第二天 编译选项
前言: 昨天我们学习了 TS 的数据类型,不知道大家回去以后练习没练习,如果你练习了一定会发现一个问题,我们的 TS 好像和 JS 不太一样 JS 写完之后直接就可以放到页面上,就可以用了,而我们的 ...
- Android网络请求(1)
Android网络请求(1) 安卓开发网络请求可谓是安卓开发的灵魂,如果你不会网络请求,那么你开发的应用软件就是一具没有灵魂的枯骨. 在安卓开发中进行网络请求和java中的网络请求有异曲同工之 ...