本课程《win32com操作word API精讲&项目实战》以视频为主,文字为辅,公众号ID:一灯编程
众所周知,在word编程中Range
和Selection
都能实现范围的选中,两者大部分都属性和方法都是相同的,但它们有本质的不同。
Selection是单例模式
一个文档中,永远只有一个Selection
对象,它等同于鼠标,鼠标选中某段文字,处理完后再选择另外一段文字,之前所选中的范围将会消失。伪代码演示:
from win32com.client import Dispatch
client = Dispatch('word.Application')
client.Visible = 1
doc = client.Documents.Open('demo.doc')
# 先声明某个范围
s = client.Selection
s.Start = 0
s.End = 10
s.Text
>>>我是selection选中的
# 再声明另外一个范围
s1 = client.Selection
s.Start = 11
s.End = 20
s.Text
>>>我是另外一个范围
s1 == s
>>>True
在声明s1
后,再获取s.Text
时,其属性值会变成s1.Text
的属性值了,使用s1 == s
比较时,一定会返回True
,说明s1
和s
是通一个对象。
而使用Range
选中时,一个文档中可以声明无数个Range
对象,可以很方便地操作各种资源。如果使用Selection
选中资源,每次都需要声明范围,每次都只能操作一个范围,便利性远不及Range
。
Selection适合用于客户端级编程
Selection
并不适合用于文档级编程,文档级编程建议使用Range
。它适合用于客户端级编程,比如word的插件开发。
ok,今天的内容就先到这,下节课我们接着讲。有问题请留言、私信
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?