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

Javascript 如何通过更改文件的Office Open XML表示形式来修改word文档的内容?,javascript,ms-word,ms-office,office-js,office-addins,Javascript,Ms Word,Ms Office,Office Js,Office Addins,我正在使用Word JavaScript API为Office Word 2016构建一个外接程序。因为它没有提供我所需要的对文档的控制级别,所以我试图通过直接更改文档的OOXML来实现这一点。由于用户可以拥有任意页数的文档,我不确定这是否是正确的方法。我想知道是否有任何方法可以简化这个过程,比如只提取文档的一部分并将其插入回文档。好问题,对于初学者来说,我很想知道API中期望的控制级别,我想知道您是否可以分享更多关于潜在差距的详细信息(提前感谢!) 现在,回答你的问题:绝对!我们通过OOXML

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

好问题,对于初学者来说,我很想知道API中期望的控制级别,我想知道您是否可以分享更多关于潜在差距的详细信息(提前感谢!)

现在,回答你的问题:绝对!我们通过OOXML打开了与文档交互的大门。这是一个非常强大的工具,尽管可能很复杂(但似乎您对WordML很了解),而且速度可能很慢,特别是在Win32或Mac以外的平台上(Word Online XML injection很慢)

实现所需的关键是获得一个范围(我需要一个关于您提到的“提取文档的部分”的更详细的标准,但归根结底是关于获得一个范围)。一旦你有了它,你实际上可以做一个range.insertOoxml(“你的OOXML”,“替换”),用你拥有的任何OOXML替换这个范围

您可以通过API中的许多不同方式获得范围。例如,search方法返回一组范围。所有对象都有一个.getRange()方法可用于此操作

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

Word.run(函数(ctx){
var myTempOOXML=“获取一些有效的OOXML!”
ctx.document.body.parations.getFirst().split([“”],false,false,false,false).getFirst().insertOoxml(myTempOOXML,“替换”);
返回ctx.sync();

}).catch(函数(e){app.showNotification(e.message)})
谢谢您的回答。我仍然很难弄清楚一个有效的OOXML字符串是什么样子的。每次我得到一个范围并打印出它的OOXML时,我得到的是整个文档的OOXML,而不仅仅是我期望的范围的OOXML<代码>变量段落=context.document.body.parations.getFirst();第.load()段;var paragraphooxml=段落.getOoxml();返回context.sync().then(函数(){console.log(paragraphooxml.value);})这打印出整个文档的OOXML,而不仅仅是第一段。是的,请阅读文章i-fwd,它讨论了如何生成尽可能少的XML,如果您将刚刚读回的XML写入文档,您将看到它只是一段。