【问题标题】:How to select multiple paragraph from selection如何从选择中选择多个段落
【发布时间】:2016-12-02 23:48:08
【问题描述】:

我正在开发一个office js word 插件。

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

我需要知道我们是否可以选择重新定义 officejs 中的范围或任何其他方式来满足我的要求。

提前致谢。

【问题讨论】:

    标签: typescript office-js


    【解决方案1】:

    有趣的问题。如果您使用范围的段落集合(在这种情况下是当前选定的范围),则可以使这项工作。段落集合(通常是 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);
    
                }
            })
        });

    这是一个示例,说明如何使用 expandTo 和 select 选择 2 个段落...

    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);
        });
    })

    希望这能让您走上正确的道路! -胡安,

    【讨论】:

    • 我需要知道如何在上面发布的场景中选择这两个段落。在互操作中,我们可以重新定义范围并选择它。我不确定是否有办法在 OfficeJS Edit: 中实现这一点我注意到您建议在 stackoverflow.com/questions/39279377 中使用 expandTo 方法。你能告诉我如何在我的场景中扩大范围(用户正在选择部分段落[从第 1 段的中间开始到第 2 段的中间]并且我需要以编程方式选择整个段落)?
    • 您可以使用paragraph.getRange() 获取每个段落的范围,然后您可以使用range.expandTo() 扩展它,最后一旦您扩展了您可以使用range.Select() 的范围跨度>
    • 这也是我的想法,这是我目前的代码。 jsfiddle.net/bkuzmdsb/#&togetherjs=7uFHoTVdw5
    • 以下语句出现错误:var firstSelectedParaRange = pars.items[0].getRange('Whole');
    • 有趣...我只是在我的原始答案中添加了更多细节,以向您展示如何选择段落。基本上,一旦您加载了段落集合,它就可以简化为 1 行代码: pars.items[0].getRange().expandTo(pars.items[pars.items.length - 1].getRange()).select ();
    猜你喜欢
    • 2021-09-11
    • 1970-01-01
    • 1970-01-01
    • 2021-05-20
    • 2010-10-06
    • 1970-01-01
    • 2019-09-29
    • 2018-03-28
    • 2023-04-08
    相关资源
    最近更新 更多