通过OOXML将docx文件加载到另一个Word文档时,内容控件会丢失

时间:2017-01-18 20:40:10

标签: javascript office365 office-js

我有一个Word添加,可以将Word文档加载到当前文档中。使用下面的代码就可以了。



var myOOXMLRequest = new XMLHttpRequest();
var myXML;
myOOXMLRequest.open('GET', 'template.xml', false);
myOOXMLRequest.send();
if (myOOXMLRequest.status === 200) {
  myXML = myOOXMLRequest.responseText;
}

Word.run(function (context) {
  Office.context.document.setSelectedDataAsync(myXML, { coercionType: 'ooxml' });
});




现在我在Word文档中添加了一些内容控件,我将其保存为template.xml(用作我的模板)。当我现在将包含内容控件的Word文档保存为XML,并尝试通过上面的代码片段加载它时,一切正常,但内容控制已经消失!我无法从Word访问它们,也无法通过Javascript访问它们:



var name = context.document.contentControls.getByTitle('myContentControl');
context.load(name);

return context.sync().then(function () {
  var nameNew = name.items[0];
  nameNew.insertText("Test", "Replace");

  return context.sync().then(function () {
  });
});




这是一个错误还是这不可能?我还想过将一些像## myValue ##这样的占位符放到Word模板中,然后用值取代它们,但是如果可能的话,我宁愿用ContentControls来做。

修改 以下是我从模板中创建的XML:http://pastebin.com/NX0ZqLiM

我只是将Word文档保存为XML,然后按上述方法加载,就创建了XML。有趣的是,当我现在运行示例时,我可以在Word中看到内容控件。但是当我尝试通过Javascript访问它们时,ContentControl集合始终为空。我使用了此处https://dev.office.com/reference/add-ins/word/contentcontrol?product=word的代码示例来尝试访问内容控件,但项目集合始终为空。

如果您需要更多信息,请与我们联系。

0 个答案:

没有答案