如何在 Office JavaScript API 中获取当前 Excel 文件?

How can I get the current Excel file in Office JavaScript API?

我正在 Excel 中开发一个选项卡窗格应用程序,它需要读取当前文档。在 Word 中,Office JavaScript API 具有方法 Office.context.document.getFileAsync(),但在 Excel 中不可用。

我可以用Office.context.document.getFileProperties()得到文件的URL,然后我想我可以用这个读取文件。

我尝试使用 HTML5 FileReader() 对象,但这只适用于从文件输入控件中选择的文件。我尝试操纵一个隐藏的文件输入控件,以便它自动使用当前文档,但是 JavaScript 出于安全原因可以理解地阻止您这样做。我可以要求用户浏览到他们当前正在使用的文档,但这将是一种糟糕的用户体验。

所以我尝试使用 ActiveXObject('Scripting.FileSystemObject'),但无论 IE 中的当前安全设置如何,选项卡窗格应用程序中根本不允许使用 ActiveX。

我还有哪些其他选择?

根据 API 路线图,Office.context.document.getFileAsync() 目前在 Excel 中不可用。

我认为使用 getFilePropertiesAsync() 不可行。它只有 return 是 URL。通常浏览器禁止开发者接触文件系统中的任何内容。因此,在 JavaScript 代码中很难访问本地文件系统。

此外,该文件可能不在本地文件系统中。例如,它可以托管在 Onedrive 或 SharePoint 中。 getFilePropertiesAsync() 应该 return 它在 Onedrive/SharePoint 中的真实 URL,而不是本地文件系统。

估计微软以后会支持getFileAsync()