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

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

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

我尝试使用HTML5 FileReader()对象,但这只适用于从文件input控件中select的文件。 我试图操作一个隐藏的文件input控件,所以它会自动使用当前的文档,但是由于安全原因,JavaScript可以理解地阻止你这样做。 我可以要求用户浏览他们当前正在使用的文档,但这将是一个糟糕的用户体验。

所以我尝试使用ActiveXObject('Scripting.FileSystemObject'),但ActiveX不允许在任何标签窗格应用程序中,无论当前的安全设置在IE中。

我还有什么其他的select?

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

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

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

我想微软将在未来支持getFileAsync()。