如何获取当前打开的 excel 工作簿的本地路径?
How can I get the local path of the currently open excel workbook?
我在 Visual Studio 2017 中使用默认的 'Excel web add-in' 模板。我正在尝试创建一个 excel 加载项,将现有工作簿的副本插入到当前的一个。第一步是获取当前工作簿的完整路径和名称。我从 here. I'm using the beta excel API 获得了代码。在 'var myFile = document.getElementById("file");' 行,myFile 始终为空。我假设空值是因为工作簿不是 'loaded' 但当我 运行 程序时工作簿确实打开了。
这是来自 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]);
}
})();
行 'var myFile = document.getElementById("file");' 始终为空,因为没有名为 "file" 的元素。这也是获取当前打开的工作簿路径的错误方式。而是使用 'Office.context.document.url' 到 return 路径。
我在 Visual Studio 2017 中使用默认的 'Excel web add-in' 模板。我正在尝试创建一个 excel 加载项,将现有工作簿的副本插入到当前的一个。第一步是获取当前工作簿的完整路径和名称。我从 here. I'm using the beta excel API 获得了代码。在 'var myFile = document.getElementById("file");' 行,myFile 始终为空。我假设空值是因为工作簿不是 'loaded' 但当我 运行 程序时工作簿确实打开了。
这是来自 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]);
}
})();
行 'var myFile = document.getElementById("file");' 始终为空,因为没有名为 "file" 的元素。这也是获取当前打开的工作簿路径的错误方式。而是使用 'Office.context.document.url' 到 return 路径。