大虾

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

本课程《win32com操作word API精讲&项目实战》以视频为主,文字为辅,公众号ID:一灯编程

众所周知,在word编程中RangeSelection都能实现范围的选中,两者大部分都属性和方法都是相同的,但它们有本质的不同。

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,说明s1s是通一个对象。

而使用Range选中时,一个文档中可以声明无数个Range对象,可以很方便地操作各种资源。如果使用Selection选中资源,每次都需要声明范围,每次都只能操作一个范围,便利性远不及Range

Selection适合用于客户端级编程

Selection并不适合用于文档级编程,文档级编程建议使用Range。它适合用于客户端级编程,比如word的插件开发。

ok,今天的内容就先到这,下节课我们接着讲。有问题请留言、私信

posted on 2023-01-29 15:56  一灯编程  阅读(173)  评论(0编辑  收藏  举报