2016-12-01 110 views
0

我正在开发一个office js文字插件。如何从选择中选择多个段落

假设我在word文档中有三个段落。用户从第一段中间到第二段中间选择文本。当点击我的插件中的按钮时,系统应该自动选择从第1段开始到第2段结束的文本。用户应该选择完整的段落而不是部分段落。如果他们这样做,系统应该自动选择整个段落。

我需要知道我们是否有选择重新定义officejs范围或其他任何方式来实现我的要求。

在此先感谢。

回答

0

有趣的问题。如果使用范围的段落集合,则可以使其工作,在此情况下为当前所选范围。段落集合(以及Word中的所有集合js API)包含完整段落,而不仅仅是选择的内容。

请运行这个例子,你会看到完整的段落是如何打印出部分选择的(如对您的问题描述)

Word.run(function(context) { 
 
     // this will return the full paragraphs within the selection: 
 
     var myParagraphs = context.document.getSelection().paragraphs; 
 
     context.load(myParagraphs); 
 

 
     return context.sync() 
 

 
     .then(function(){ 
 
      for(var i=0; i< myParagraphs.items.length; i++){ 
 
       // here you will get the full paragraphs, not just what the user selected. 
 
       console.log("this is full paragraph:" + (i + 1) + ":" + myParagraphs.items[i].text); 
 

 
      } 
 
     }) 
 
    });

下面是一个例子,你怎么能选择2段使用expandTo并选择...

Word.run(function (context) { 
 
    var pars = context.document.getSelection().paragraphs; 
 
    pars.load(); 
 

 
    return context.sync().then(function() { 
 
    pars.items[0].getRange().expandTo(pars.items[pars.items.length - 1].getRange()).select(); 
 
     
 
     return context.sync() 
 

 
    }).catch(function (error) { 
 
     console.log(error.message); 
 
    }); 
 
})

希望这将你设置在正确的道路上! -Juan,

+0

我需要知道如何在上面发布的场景中选择两个段落。在Interop中,我们可以重新定义范围并选择它。我不确定在OfficeJS中是否有办法实现这一点 **编辑:**我注意到您已经建议在http://stackoverflow.com/questions/39279377中使用expandTo方法。你能告诉我如何在我的场景中扩展范围(用户选择部分段落[从第一段中间开始到第二段中段],并以编程方式选择整段)? – CSS

+0

你可以使用paragraph.getRange()来获得每个段落的范围,然后你可以使用range.expandTo()来扩展它,最后一次你扩大范围,你可以使用range.Select() –

+0

这就是我也认为,这里是我到目前为止的代码。 https://jsfiddle.net/bkuzmdsb/#&togetherjs=7uFHoTVdw5 – CSS