如何通过更改Office Open XML表示文件来修改word文档的内容?

时间:2017-03-10 10:43:32

标签: javascript ms-word ms-office office-js office-addins

我正在使用Word JavaScript API为Office Word 2016构建一个加载项。因为它没有提供我需要的文档控制级别,所以我试图通过直接更改文档的OOXML来实现这一点。由于用户可以拥有包含任意数量页面的文档,因此我不确定这是否是正确的方法。我想知道是否有任何方法可以简化此操作,例如只提取部分文档并将其插回。

1 个答案:

答案 0 :(得分:1)

很好的问题,对于初学者我很想知道你期望在API中控制的程度,我想知道你是否可以分享更多关于潜在差距的细节(提前谢谢!)。

现在,回答你的问题:绝对!我们通过OOXML打开门来与文档进行交互。这是一个非常强大的工具,虽然可能很复杂(但似乎你对WordML很了解)并且它可能很慢,特别是在Win32或Mac以外的平台上(Word Online XML注入是sloooooooow)。

实现你所需要的关键是你得到一个范围(我需要一个更详细的标准"提取文件的部分"你提到过,但是在一天结束时它的关于得到一个范围)。一旦你拥有它,你实际上可以做一个range.insertOoxml("你的OOXML","替换")用你拥有的任何OOXML替换那个范围。

您可以通过API中的多种不同方式获取范围。例如,搜索方法返回范围的集合。所有对象都有一个.getRange()方法,您可以使用它。

以下示例使用给定的OOXML替换文档中第一个段落的第一个单词。



  Word.run(function (ctx) {

             var myTempOOXML = "get some valid  OOXML!"
             ctx.document.body.paragraphs.getFirst().split([" "],false,false,false).getFirst().insertOoxml(myTempOOXML, "replace");
             return ctx.sync();


         }).catch(function (e) { app.showNotification(e.message)})




希望这会让你朝着正确的方向前进。 顺便说一下,here is a useful article about ooxml and word.js