从 Javascript 插件控制 Word 文档中的选择范围

Posted

技术标签:

【中文标题】从 Javascript 插件控制 Word 文档中的选择范围【英文标题】:Control the selection range in Word document from Javascript Add-in 【发布时间】:2018-01-18 06:33:26 【问题描述】:

给定 Word 文档正文文本中的某个范围,我想将当前选择设置为该范围并替换其中的文本。

有谁知道如何使用 javascript API 从加载项控制 Word 文档中的当前选择?我似乎在文档中找不到任何内容:

https://dev.office.com/reference/add-ins/word/word-add-ins-reference-overview

我知道我可以使用context.document.getSelection() 获取文档中的当前选择,但是如何获取文档中的任何选择或指定选择了文档的哪个部分?如何以编程方式控制文档中选择的内容?

【问题讨论】:

【参考方案1】:

获取用户选择的选定范围:

  // Run a batch operation against the Word object model.
        Word.run(function (context) 

            var range = context.document.getSelection(); // Create a range proxy object for the current selection.
            context.load(range);
            // Synchronize the document state by executing the queued commands,and return a promise to indicate task completion.
            return context.sync().then(function () 

                if (range.isEmpty) //Check if the selection is empty
                
                    return;
                
                var html = range.getHtml();
                return context.sync().then(function () 

                    var htmlVal = html.value; //Get the selected text in HTML 
               );
             );
           );

在选定范围内设置用户

    // Run a batch operation against the Word object model.
    Word.run(function (context) 

        var range = context.document.getSelection();// Create a range proxy object for the current selection.

       range.clear();                                                             
       range.delete();

      // Synchronize the document state by executing the queued commands, and return a promise to indicate task completion.
       return context.sync().then(function () 

         range.styleBuiltIn = "Normal";                                                               
         range.insertText("your text"); // Queue a command to insert the encrypted text instead the current text 
      );
   )

因此,如果您以某种方式已经有了“范围”,则无需获取它。

** 如果您不想进行用户选择并且只想更改文档的某些部分,您可以使用段落选择来实现它,您可以在此处找到有关段落对象的更多信息以及您可以用它做什么: https://dev.office.com/reference/add-ins/word/paragraph

祝你好运

【讨论】:

感谢@OriEng。这不是我想要的,对不起。我会尽力澄清我的问题。我知道我可以在文档中获取当前选择,但是如何获取文档中的任何选择?类似于new Word.Range(start, end),其中startend 是文档文本中的任何索引。 @CraigSketchley 你所说的“任意选择”是什么意思?对不起,我还是不明白你的问题 不用担心@OriEng。对不起,我没有更清楚。简单地说,我想以编程方式控制选择。据我了解,我只能访问用户选择的内容,但我的加载项如何选择文档的任何部分? @CraigSketchley 我认为您的选项可能是段落选择,然后替换此段落:dev.office.com/reference/add-ins/word/paragraph 另一个选项只是全选,我在 API 上找不到另一种选择选择 @CraigSketchley 很高兴为您提供帮助,希望您成功解决您的问题。我更新了我的答案,告诉我是否要添加其他必要的内容。

以上是关于从 Javascript 插件控制 Word 文档中的选择范围的主要内容,如果未能解决你的问题,请参考以下文章

Word 加载项中的绑定用法

Word 文档的优秀代码片段工具或插件?

word文档查看器浏览器插件

百度富文本编辑器支持从word复制粘贴保留格式和图片的插件

kindeditor富文本编辑器支持从word复制粘贴保留格式和图片的插件

富文本编辑器xheditor支持从word复制粘贴保留格式和图片的插件