我正在编写一个加载项,用户可以选择加载不同的预定义模板。
我在电脑上将这些模板作为docx文件。
我知道方法body.insertFileAsBase64,但我无法让它工作!
function insertTemplate01() {
Word.run(function (context) {
var body = context.document.body;
body.clear();
body.insertText("rapport 1", "Start");
return context.sync();
});
}
因此,我不想只插入字符串,而是将.docx文件作为模板加载。
我想我需要一个如何做到这一点的婴儿步骤指南。
我不知道如何将docx文件转换为base64,然后使用它们加载到当前文档中。
非常感谢!
答案 0 :(得分:1)
body.insertFileAsBase64必须适合您的目的。 我假设您遇到了docx文件的base64编码问题。看看这个“愚蠢的故事”示例展示了如何获取base64,然后将其插入到文档中,假设文档在某个URL中可用。
https://github.com/OfficeDev/Word-Add-in-SillyStories/blob/master/sample.js
以下是关于如何从二进制文件获取base64的另一个讨论: Convert binary data to base64 with javascript
要将二进制流转换为base64,您可以执行以下操作:
function insertPickedFile() {
var myFile = document.getElementById("FileToPick"); // assuming there is a <input type="file" id="FileToPick"> element, btw this will be the handler for its change event.. so you also need to initialize a handler like $('#FileToPick').change(insertPickedFile);
var reader = new FileReader();
reader.onload = (function (theFile) {
return function (e) {
Word.run(function (context) {
var startIndex = e.target.result.indexOf("base64,"); // when you use the readAsDataURL method the base64 is included in the result, we just need to get that substring, and then insert it using office.js :)
var mybase64 = e.target.result.substr(startIndex + 7, e.target.result.length);
context.document.body.insertFileFromBase64(mybase64, "replace");
return context.sync()
})
};
})(myFile.files[0]);
// Read in the image file as a data URL.
reader.readAsDataURL(myFile.files[0]);
}