如何获取当前打开的 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 路径。