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

3

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

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

我尝试使用HTML5 FileReader()对象,但它只能用于从文件输入控件中选择的文件。我尝试操作隐藏的文件输入控件,以便它自动使用当前文档,但JavaScript出于安全原因可以理解地防止这样做。我可以要求用户浏览他们正在使用的文档,但这会给用户带来不良体验。

因此,我尝试使用ActiveXObject('Scripting.FileSystemObject'),但无论IE当前的安全设置如何,都不允许在选项卡应用程序中使用ActiveX。

我还有哪些选择?


你想获取整个文件还是只是内容? - marcel
@marcel,我实际需要的是访问自定义属性。由于Office.js中没有此选项,因此我正在尝试加载整个文件,解压缩并读取custom.xml。 - Paul T Davies
您可以使用 Office.context.document.getFilePropertiesAsync([, options], callback) 访问属性。 - marcel
@marcel 这只返回URI。它似乎是未来功能的占位符。 - Paul T Davies
@PaulTDavies 找到这个问题的解决方案了吗? - Bharat Khunti
@BharatKhunti,恐怕我没有。Office.context.document.getFileAsync()现在支持吗? - Paul T Davies
1个回答

2
根据API路线图,Office.context.document.getFileAsync()目前在Excel中不可用。
我认为使用getFilePropertiesAsync()是不可行的。它只返回URL。通常浏览器禁止开发人员触及文件系统中的任何内容。因此,在JavaScript代码中访问本地文件系统很难。
此外,文件可能不在本地文件系统中。例如,它可能托管在Onedrive或SharePoint中。getFilePropertiesAsync()应该返回其在Onedrive/SharePoint中的真实URL,而不是本地文件系统。
我猜想Microsoft将来会支持getFileAsync()。

那么答案是目前没有办法做到吗?这确实似乎是我的经验。 - Paul T Davies

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接