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