作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有这样的要求,我需要从 Word 文档中清除/删除现有内容,然后插入新的 Base 64 编码文档。
以下是我首先清除文档 body
然后插入新文档的代码片段。
此外,如果我评论 body.clear()
,则 InsertLocation.start
和 InsertLocation.end
工作正常。无论是否调用 body.clear()
,InsertLocation.replace
都不起作用。
它也不会清除某些项目,例如水印、页眉或页脚。
我期望 body.clear()
应该生成一个与新空白文档相同的文档。
showDocumentInWord(documentData, docName) {
let self = this;
window.Word.run(function (context) {
let body = context.document.body;
body.clear();
body.insertFileFromBase64(documentData,
window.Word.InsertLocation.replace);
return context.sync().then(function () {
// Show success message here
});
})
.catch(function (error) {
if (error instanceof window.OfficeExtension.Error) {
// console.log('Debug info: ' + JSON.stringify(error.debugInfo));
}
});
};
最佳答案
由于您正在清除文档主体,因此您应该使用 "start"
而不是 "replace"
作为插入位置。
至于页眉和页脚,您的代码仅针对 document.body
。为了清除文档的页眉和页脚,您需要专门清除这些部分:
return Word.run(function (context) {
let sections = context.document.sections;
sections.load();
return context.sync()
.then(function () {
sections.items.forEach(function (section) {
// Clear the Body
section.body.clear();
// Clear any Headers
section.getHeader('primary').clear();
section.getHeader('firstPage').clear();
section.getHeader('evenPages').clear();
// Clear any Footers
section.getFooter('primary').clear();
section.getFooter('firstPage').clear();
section.getFooter('evenPages').clear();
});
});
});
您可能还想看一下 Word JavaScript API 1.4 的测试版. 1.4 版增加了一个 createDocument(base64File: string)
允许您基于 base64File
创建全新文档的方法。它还添加了一个 document.open()
方法允许您打开使用 createDocument
创建的文档对象。
关于ms-word - body.clear() 和 body.insertFileFromBase64() 没有按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48319254/
我是一名优秀的程序员,十分优秀!