【问题标题】:Switching context to new document in Office.js Word Add-in在 Office.js Word 加载项中将上下文切换到新文档
【发布时间】:2019-08-09 18:24:36
【问题描述】:

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

这是我正在使用的代码:

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 中。

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      这是不支持的,这是设计行为。您只能操作插入 Web 插件的当前文档的内容。它不能做跨文档操作。

      【讨论】:

      • 事后看来这是有道理的。我想我希望通过 Word.application 或 newdoc 上下文仍然有可能。我希望他们很快会再次开始为 Word 开发 Office.js,以便我可以在当前文档中操作模板和样式定义。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-22
      • 2017-02-27
      • 1970-01-01
      • 2013-01-23
      • 2018-11-13
      • 1970-01-01
      相关资源
      最近更新 更多