我在Visual Studio 2017中使用默认的“ Excel Web加载项”模板。我试图创建一个将现有工作簿副本插入到当前工作簿中的excel加载项。第一步是获取当前工作簿的完整路径和名称。我从here获得了代码。我正在使用beta excel API。在“ var myFile = document.getElementById(“ file”);”行中myFile始终为null。我认为null值是因为未“加载”工作簿,但在运行程序时确实打开了工作簿。
这是Home.js中的代码:
'use strict';
(function () {
Office.onReady(function () {
// Office is ready
$(document).ready(function () {
// The document is ready
$('#RunMacroButton').click(RunMacro);
});
});
function RunMacro() {
var myFile = document.getElementById("file");
var reader = new FileReader();
reader.onload = (function (event) {
Excel.run(function (context) {
// strip off the metadata before the base64-encoded string
var startIndex = event.target.result.indexOf("base64,");
var workbookContents = event.target.result.substr(startIndex + 7);
Excel.createWorkbook(workbookContents);
return context.sync();
}).catch(errorHandlerFunction);
});
// read in the file as a data URL so we can parse the base64-encoded string
reader.readAsDataURL(myFile.files[0]);
}
})();
答案 0 :(得分:0)
'var myFile = document.getElementById(“ file”);'行始终为null,因为没有称为“文件”的元素。这也是获取当前打开的工作簿路径的错误方法。而是使用“ Office.context.document.url”返回路径。