最新要闻

广告

手机

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

家电

焦点滚动:win32com操作word API精讲 第八集 Range和Selection的区别

来源:博客园


【资料图】

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

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

Selection是单例模式

一个文档中,永远只有一个Selection对象,它等同于鼠标,鼠标选中某段文字,处理完后再选择另外一段文字,之前所选中的范围将会消失。伪代码演示:

from win32com.client import Dispatchclient = Dispatch("word.Application")client.Visible = 1doc = client.Documents.Open("demo.doc")# 先声明某个范围s = client.Selections.Start = 0s.End = 10s.Text>>>我是selection选中的# 再声明另外一个范围s1 = client.Selections.Start = 11s.End = 20s.Text>>>我是另外一个范围s1 == s>>>True

在声明s1后,再获取s.Text时,其属性值会变成s1.Text的属性值了,使用s1 == s比较时,一定会返回True,说明s1s是通一个对象。

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

Selection适合用于客户端级编程

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

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

关键词: 另外一个 单例模式 大部分都