首页 > 解决方案 > 如何使用 JS API 在 MS Office Word 插件中以编程方式获取 Word 文档中的文本范围

问题描述

我需要以编程方式(通过 MS Office 插件)获取 word 文档中文本的数值范围(例如:startpoint-30、endpoint-35),但我无法通过 JS 找到如何做到这一点。这是一个例子:

你好,我的朋友皮特,我昨天和你的朋友罗伯特谈过了,他谈到了他的朋友安。

所以,我需要获取我想要的任何单词的范围,并为未来的发展创建单词范围的数组。例如,如果我们谈论单词“Pete”,它的范围应该是(16,20),如果文本的开头是 0。当我在互联网上研究这个时,我发现了一些似乎不可能的信息与JS API有关。

但我在 .NET 文档中发现了这样的功能。这是链接 https://docs.microsoft.com/en-us/visualstudio/vsto/how-to-programmatically-define-and-select-ranges-in-documents?view=vs-2019

所以最后一个问题。是否有可能(如果是,它是否非常复杂,我该如何实现)使用 JS API 来完成我上面描述的功能,或者我应该切换到 .NET 不要浪费我的时间。

标签: ms-wordms-officeoffice-jsoffice-addins

解决方案


我假设您的意思是从字面上获取范围的数字范围,而不是您想要使用已经必须获得范围的数字范围。因此,如果我了解您想要做什么,那么我建议您尝试以下操作:

以 Range 对象的形式获取对整个文本的引用。然后使用Range.split方法获取“Pete”之前的范围。返回的集合的第一个成员的文本是“你好,我的朋友”。ranges该字符串的长度是您的起点。您的终点是起点和“Pete”长度之和。

var target = "Pete";
var ranges = myRange.split([target], true, true, false);
var precedingRange = ranges.getFirst();
var startPoint = precedingRange.text.length;
var endPoint = starPoint + target.length; 

推荐阅读