Office.js API是否支持多个范围选择?

时间:2019-08-12 18:37:16

标签: ms-word selection office-js

我需要通过Office.js API同时选择多个范围,就像您可以通过按住CTRL键并突出显示多个不连续的段落一样在MSWord UI中进行操作,如下面的屏幕截图:

enter image description here

此尝试无效。与其突出显示文档中“ the”一词的前两个实例,不如突出显示第一个实例,然后突出显示第二个实例:

   Word.run(function (context) {
       // Set up the search options.
       var options = Word.SearchOptions.newObject(context);
       options.matchCase = false;
       options.ignoreSpace = true;
       options.ignorePunct = true;
       options.matchWildcards = true;
       var searchText = "the";
       var searchResults = context.document.body.search(searchText, options);
       context.load(searchResults);
       return context.sync().then(function () {
           searchResults.items[0].select();
           searchResults.items[1].select();
       });
   });

3 个答案:

答案 0 :(得分:1)

否,所有API都不支持多个选择。甚至用户使用Ctrl + select的能力也是相对较新的。该功能从未被延续到API。

API最能做的是突出显示(或格式化)感兴趣的Range对象。 Word的对话框中有这种功能, COM API也可以使用,但是我找不到与JS API等效的功能...

答案 1 :(得分:0)

要确认Cindy提到的内容,Office.js不仅不支持非连续选择(对于Word,虽然我们确实支持Excel,但非连续选择),但在其他平台(即Word Online)上也手动不支持。 >

答案 2 :(得分:0)

有可能。 在使用绑定和 Office.context.document.goToByIdAsync() 时,我遇到了一个奇怪的结果。使用此函数,您可以导航到任何绑定,而无需调用 Word.Run(),这很好。有一个选项叫做SelectionMode,默认情况下不选择绑定,但是可以设置为选择绑定的内容。奇怪的是,以这种方式选择内容并不会取消选择当前选择!这不是我想要的结果,fwiw;对我来说,这是一个麻烦事,需要我在使用 goToByIdAsync 之前“取消选择”任何当前选择。但是,您可以使用它来选择多个范围,方法是将它们包装在 contentControls 中,然后在它们上创建绑定,然后在每个绑定上调用 goToByIdAsync(将 SelectionMode 设置为 Select)。 我没有测试过这个。

编辑 实际上,先前的选择已取消选择,但它仍然突出显示,就好像它仍然被选中一样。这似乎是一个显示错误。