ms-word - body.clear() 和 body.insertFileFromBase64() 没有按预期工作

标签 ms-word office-js

我有这样的要求,我需要从 Word 文档中清除/删除现有内容,然后插入新的 Base 64 编码文档。

以下是我首先清除文档 body 然后插入新文档的代码片段。

此外,如果我评论 body.clear(),则 InsertLocation.startInsertLocation.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/

相关文章:

javascript - 对于每个单元格循环 - Excel JavaScript API

javascript - 加载项行为多个打开的 Word 文档

excel - 如何将Excel表格粘贴到word中而不丢失行高

javascript - 有没有办法通过office.js获取包含选定内容的文档

excel - 如何使用 VBA 将 Microsoft Word 公式导入 Microsoft Excel?

ms-word - 在任务 Pane 中单击后如何将MS Word光标集中发送回当前文档

javascript - office.js 插入表格到 powerpoint

office-js - 使用 Javascript 插件操作 PowerPoint?

c# - 适当的互操作清理

ms-word - word插件弹出对话框