如何使用Office JS API对Word文档的选定文本执行某些操作?

时间:2019-03-30 12:12:41

标签: ms-word office-js office-web-app

我需要从Word文档中获取选定的文本,并使用Office JavaScript API突出显示其中的某些特定单词。到目前为止,我能够获得所选文本,但无法突出显示所选文本中的特定单词。

PS:我能够突出显示整个文档正文中的文本,我要做的就是突出显示所选范围内的文本。这是突出显示整个文档中单词的代码。

Word.run(function (context) {
                context.load(context.document.body, 'text')
                return context.sync().then(function () {
                    for (var i = 0; i < item.words.length; i++) {

                        var searchResults = context.document.body.search(item.words[i], { ignorePunct: true, matchCase: false, matchWholeWord: true });

                        context.load(searchResults, 'font');

                        return context.sync().then(function () {

                            for (var i = 0; i < searchResults.items.length; i++) {
                                searchResults.items[i].font.color = color;
                                searchResults.items[i].font.highlightColor = "#F0F0F0";
                                searchResults.items[i].font.bold = true;
                            }

                            return context.sync();
                        });
                    }
                });

            })
               .catch(function (error) {
                    console.log('Error: ' + JSON.stringify(error));
                    if (error instanceof OfficeExtension.Error) {
                        console.log('Debug info: ' + JSON.stringify(error.debugInfo));
                    }
                });

1 个答案:

答案 0 :(得分:1)

您只需要获取所选文本的范围,然后对其应用逻辑即可。

将此行context.load(context.document.body, 'text')替换为以下两行:

var selectedRange = context.document.getSelection();
context.load(selectedRange, "text");

然后将第5行中的context.document.body替换为selectedRange