如何通过更改文件的 Office Open XML 表示来修改 word 文档的内容?
How to modify the contents of a word document by changing Office Open XML representation of the file?
我正在使用 Word JavaScript API 为 Office Word 2016 构建一个加载项。由于它不提供对我需要的文档的控制级别,我试图通过直接更改文档的 OOXML 来实现这一点。由于用户可以拥有任意页数的文档,因此我不确定这是否是正确的方法。我想知道是否有任何方法可以简化这一点,比如只提取文档的一部分并将其插入回去。
好问题,对于初学者来说,我很想知道您在 API 中期望的控制级别,我想知道您是否可以分享有关潜在差距的更多详细信息(提前致谢!)。
现在,回答你的问题:绝对!我们通过 OOXML 打开门与文档进行交互。这是一个非常强大的工具,尽管可能很复杂(但似乎你对 WordML 很了解)并且它可能很慢,特别是在 Win32 或 Mac 以外的平台上(Word Online XML 注入是 sloooooooow ).
完成您需要的关键是获得一个范围(我需要一个关于您提到的 "extracting parts of the document" 的更详细的标准,但归根结底是获得一个范围)。一旦你拥有它,你实际上可以做一个 range.insertOoxml("your OOXML","replace") 来用你拥有的任何 OOXML 替换那个范围。
您可以在 API 中通过多种不同的方式获取范围。例如搜索方法 returns 范围的集合。所有对象都有一个 .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
我正在使用 Word JavaScript API 为 Office Word 2016 构建一个加载项。由于它不提供对我需要的文档的控制级别,我试图通过直接更改文档的 OOXML 来实现这一点。由于用户可以拥有任意页数的文档,因此我不确定这是否是正确的方法。我想知道是否有任何方法可以简化这一点,比如只提取文档的一部分并将其插入回去。
好问题,对于初学者来说,我很想知道您在 API 中期望的控制级别,我想知道您是否可以分享有关潜在差距的更多详细信息(提前致谢!)。
现在,回答你的问题:绝对!我们通过 OOXML 打开门与文档进行交互。这是一个非常强大的工具,尽管可能很复杂(但似乎你对 WordML 很了解)并且它可能很慢,特别是在 Win32 或 Mac 以外的平台上(Word Online XML 注入是 sloooooooow ).
完成您需要的关键是获得一个范围(我需要一个关于您提到的 "extracting parts of the document" 的更详细的标准,但归根结底是获得一个范围)。一旦你拥有它,你实际上可以做一个 range.insertOoxml("your OOXML","replace") 来用你拥有的任何 OOXML 替换那个范围。
您可以在 API 中通过多种不同的方式获取范围。例如搜索方法 returns 范围的集合。所有对象都有一个 .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