在Office.js Word加载项中将上下文切换到新文档

时间:2019-08-07 16:00:17

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

我有一个功能,需要根据新模板将数据从现有文档复制到新文档中。问题是,当我要加载新创建的对象的文档并插入数据时,它会将其插入 现有 文档中。看起来它不会将上下文切换到要使用的新文档,但是我找不到原因。一切正常,没有错误,只是数据以错误的文档结尾。

这是我正在使用的代码:

public convertdoc() {
    this.getText('htmlsource', 'template.txt').subscribe((template) => {
      Word.run(async (context) => {
        const data = context.document.body;
        const xml = data.getOoxml();
        await context.sync();
        const val = xml.value;
        const newDoc = context.application.createDocument(template);
        context.load(newDoc);
        await context.sync();
        newDoc.open();
        await newDoc.context.sync();
        const body = newDoc.context.document.body; 
        await newDoc.context.sync();
        body.insertOoxml(val, 'End');
      }).catch((err) => { this.log('Error: ' + err.message); });
    });
  }

我是否正在忽略某些内容,或者newDoc.context是否不能以这种方式工作?如何获得新文档的正文(具有新的上下文)?

顺便说一句,getText函数是一个简单的ajax函数,它返回base64编码的.dotx文件。日志功能只是将文本添加到任务窗格上元素的innerHtml中。

2 个答案:

答案 0 :(得分:0)

不支持此功能,这是设计使然。您只能操作插入Web加载项的当前文档的内容。它无法进行跨文档操作。

答案 1 :(得分:0)

我最终将ooXML从当前文档写入本地存储,然后从已将任务窗格设置为自动打开的模板中打开新文档。然后,任务窗格检查本地存储中是否有任何内容并将其粘贴到新文档中。就像魅力一样:)