架构师_程序员_码农网

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1318|回复: 2

[资料] VSTO(二)获取 Word 选中文字长度插件

[复制链接]
发表于 2023-4-30 20:53:15 | 显示全部楼层 |阅读模式
需求:使用 VSTO 开发一个 Office 简单的插件,例如:获取 Word 选中文字长度插件。

Word 对象模型

Word 提供了数百个可与之交互的对象。 这些对象采用严格遵循用户界面的层次结构进行组织。 Application 对象位于层次结构的顶部。 此对象表示 Word 的当前实例。 Application 对象包含 Document、 Selection、 Bookmark和 Range 对象。 上述每个对象均具有很多方法和属性,可用于操作对象和与之进行交互。

下图显示了 Word 对象模型层次结构中这些对象的一个视图。

QQ截图20230430202620.jpg

文档:https://learn.microsoft.com/zh-cn/visualstudio/vsto/word-object-model-overview

Application 对象

Application 对象表示 Word 应用程序,并且是所有其他对象的父级。 其成员通常作为一个整体应用于 Word。 你可以使用其属性和方法来控制 Word 环境。

在 VSTO 外接程序项目中,可以通过使用 Application 类的 Application 字段来访问 ThisAddIn 对象。

在文档级项目中,可以通过使用 Application 类的 Application 属性来访问 ThisDocument 对象。

Document 对象

Document 对象是 Word 编程的中心。 它表示一个文档及其所有内容。 当你打开文档或创建新文档时,将创建新的 Document 对象,并将其添加到 Documents 对象的 Application 集合。 具有焦点的文档被称为活动文档。 它由 ActiveDocument 对象的 Application 属性表示。

在创建文档级项目时,可以通过使用项目中生成的 Document 类访问 ThisDocument 成员。 通过使用 Document 类中代码的 Me 或 this 关键字、或通过使用 ThisDocument 类外部的代码的 Globals.ThisDocument ,即可访问 ThisDocument 对象。

Selection 对象

Selection 对象表示当前所选的区域。 在 Word 用户界面中执行操作(如文本加粗)时,可以选择或突出显示文本,然后应用格式设置。 文档中始终存在 Selection 对象。 如果未选中任何内容,则它表示插入点。 此外,选定内容可包含多个不相邻的文本块。

Range 对象

Range 对象表示文档中的相邻区域,并由起始字符位置和结束字符位置进行定义。 并不仅限于单个 Range 对象。 你可以在同一文档中定义多个 Range 对象。 Range 对象具有以下特性:

  • 它可以只包含单独的插入点,也可包含一个文本范围或整个文档。
  • 它包括非打印字符,如空格、制表符和段落标记。
  • 它可以是当前选定内容所表示的区域,也可以表示不同于此内容的区域。
  • 它在文档中不可见,这与选定内容不同,后者总是可见。
  • 它不随文档一起保存,且仅在代码运行时才存在。
  • 当在某个范围的末尾插入文本时,Word 会自动扩展该范围以包括插入的文本。


Content Control 对象(内容控件对象)

ContentControl 提供一种用于控制 Word 文档内文本和其他类型的内容的输入和呈现的方法。 ContentControl 可以显示多种不同类型的 UI,它们进行了优化以在 Word 文档中使用,如多信息文本控件、日期选取器或组合框。 你还可以使用 ContentControl 来防止用户编辑文档或模板的某些节。

Visual Studio 会将 ContentControl 对象扩展到几个不同的主机控件。 虽然 ContentControl 对象能显示可用于内容控件的所有不同类型的 UI,Visual Studio 还是为每个内容控件提供了一个不同的类型。 例如,你可以使用 RichTextContentControl 来创建多信息文本控件,或者可以使用 DatePickerContentControl 来创建日期选取器。 这些主机控件的行为与本机 ContentControl的类似,但它们还具有其他事件和数据绑定功能。

Bookmark 对象

Bookmark 对象表示文档中的相邻区域,同时具有起始位置和结束位置。 你可以使用书签标记文档中的某个位置,也可将其作为文档中文本的容器。 Bookmark 对象可以包含插入点,也可以与整个文档一样大。 Bookmark 具有下列特征,以将其与 Range 对象区别开来:

  • 你可以在设计时命名书签。
  • Bookmark 对象随文档一起保存,因此在代码停止运行或文档关闭时不会被删除。
  • 通过将 ShowBookmarks 属性来访问 View 属性设置为 false 或 true。
  • Visual Studio 通过提供 Bookmark 主机控件来扩展 Bookmark 对象。 Bookmark 主机控件的行为与本机 Bookmark的类似,但它们还具有其他事件和数据绑定功能。 你可以将数据绑定到文档上的书签控件,操作方式与将数据绑定到 Windows 窗体上文本框控件的方式相同。


创建 Word VSTO 外接程序

了解了基础概念后,打开 VS 2022 新建 Word VSTO 外接程序,如下图:

QQ截图20230430202734.jpg

新建一个可视化的功能区,如下图:

QQ截图20230430202938.jpg

双击 Ribbon1.cs 打开,删除默认的 tab 选项卡,并拖拽一个新的选项卡进去,如下图:

QQ截图20230430203026.jpg QQ截图20230430203211.jpg

拖动一个 group 和一个 button 控件到新建的 tab 选项卡内,如下图:

QQ截图20230430203420.jpg

双击新建的 button 按钮,创建 click 点击事件,代码如下:

QQ截图20230430205029.jpg QQ截图20230430205109.jpg

(完)





上一篇:VSTO(一)简单介绍和开发工具
下一篇:VSTO(三)将 DataTable 数据插入到 Word 文档
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
 楼主| 发表于 2023-4-30 23:32:31 | 显示全部楼层
VSTO(一)简单介绍和开发工具
https://www.itsvse.com/thread-10573-1-1.html

VSTO(二)获取 Word 选中文字长度插件
https://www.itsvse.com/thread-10574-1-1.html

VSTO(三)将 DataTable 数据插入到 Word 文档
https://www.itsvse.com/thread-10575-1-1.html
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 2023-5-2 10:30:48 | 显示全部楼层
学习学习
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2024-4-28 10:27

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表