使用Office Addin JavaScript API

时间:2018-01-21 20:33:40

标签: office-js

如何根据MS Office Word Addin的格式特征找到文本?

例如:在我当前的选择中查找所有粗体文本范围;在我当前的选择中找到所有斜体文本范围;在我当前的选择中查找所有大写单词范围。



Word.run(function (context) {
    var range = context.document.getSelection();
    context.load(range, ['text', 'font']);
    return context.sync()
        .then(function(){
             // This will find me the TEXTUAL words, but not the reference 
             // to the word object so I can operate on it (like change formatting)
             // And it doesn't help me with searching based on <b>bold</b> bits.
             var resultCaps = range.text.match(/(?=[A-Z0-9])([A-Z0-9\s]{2,})/g);
             console.log(resultCaps);
        });
}
&#13;
&#13;
&#13;

编辑:根据目前提供的帮助更新了问题......

根据格式进行搜索会变得更难,因为某些范围不是以粗体文本开头,而是包含粗体内容。例如&#34; [ FRED ]&#34;没关系,但是&#34; [ FRED ]&#34;不是。 (使用getTextRanges()进行拆分时)

有没有办法将每个范围拆分成单个字符getTextRanges(???)然后重新组合成单​​词?

例如:

&#13;
&#13;
Word.run(function (context) {
    var words = context.document.getSelection().getTextRanges([' '], true);
    context.load(words, ['text', 'font']);
    var boldRanges = [];
    return context.sync()
        .then(function(){
            for (var i =0; i < words.items.length; ++i) {
                var word = words.items[i];
                if (word.font.bold)
                    boldRanges.push(word);
            }
        })
        .then(function () {
            for (var j = 0; j < boldRanges.length; ++j) {
                boldRanges[j].font.highlightColor = '#FF00FF';
            }
        });
});
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:1)

没有&#34;字&#34;对象,与Range对象不同。 Range对象具有格式化属性。获取表示所选范围中的概念词的Range对象的一种方法是对从getSelection返回的Range对象使用Range.getTextRanges()方法。您可以将空格字符作为分隔符传递给getTextRanges()。 E.g:

var wordRanges = myRange.getTextRanges([' '], true);

然后你循环遍历wordRanges,用这样的东西寻找粗体字:

wordRangesInParagraphs.forEach(function (wordRangesInSingleParagraph) {
   wordRangesInSingleParagraph.items.forEach(function (word, index) {

       // stuffed snipped

        if (word.font.bold) { 
            // do work on the bold words
        }
    }
}

此代码来自Office Add-in示例中的此文件,用于查找粗体文本,但它是一个非常长的文件,因此您必须搜索以查找调用getTextRanges的位置以及结果的位置用来。

Word Add-in JavaScript MarkdownConversion