将上下文切换到 Office.js Word 加载项中的新文档
Switching context to new document in Office.js Word Add-in
我有一个功能需要将现有文档中的数据复制到基于新模板的新文档中。问题是,当我想加载新创建的对象的文档并插入数据时,它却将其插入到 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 函数,它 returns 一个 base64 编码的 .dotx 文件。日志功能只是将文本添加到任务窗格中元素的 innerHtml 中。
这是不受支持的,这是设计使然。您只能操作插入 Web 插件的当前文档的内容。不能跨文档操作
我最终将 ooXML 从当前文档写入本地存储,然后从任务窗格设置为自动打开的模板打开新文档。任务窗格然后检查本地存储中是否有内容并将其粘贴到新文档中。很有魅力:)
我有一个功能需要将现有文档中的数据复制到基于新模板的新文档中。问题是,当我想加载新创建的对象的文档并插入数据时,它却将其插入到 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 函数,它 returns 一个 base64 编码的 .dotx 文件。日志功能只是将文本添加到任务窗格中元素的 innerHtml 中。
这是不受支持的,这是设计使然。您只能操作插入 Web 插件的当前文档的内容。不能跨文档操作
我最终将 ooXML 从当前文档写入本地存储,然后从任务窗格设置为自动打开的模板打开新文档。任务窗格然后检查本地存储中是否有内容并将其粘贴到新文档中。很有魅力:)