【问题标题】:How can I get the current Excel file in Office JavaScript API?如何在 Office JavaScript API 中获取当前 Excel 文件?
【发布时间】:2015-05-21 13:07:22
【问题描述】:

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

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

我尝试使用 HTML5 FileReader() 对象,但这仅适用于从文件输入控件中选择的文件。我尝试操作隐藏文件输入控件,使其自动使用当前文档,但出于安全原因,JavaScript 可以理解地阻止您这样做。我可以要求用户浏览到他们当前正在使用的文档,但这会导致用户体验不佳。

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

我还有什么其他选择?

【问题讨论】:

  • 您要获取整个文件还是只获取内容?
  • @marcel 我真正需要的是访问自定义属性。由于 Office.js 中没有此选项,我正在尝试加载整个文件,解压缩并读取 custom.xml。
  • 您可以使用Office.context.document.getFilePropertiesAsync([, options], callback);访问属性
  • @marcel 只返回 URI。它似乎是未来功能的占位符。
  • @PaulTDavies 找到解决这个问题的方法了吗?

标签: javascript excel filereader activexobject apps-for-office


【解决方案1】:

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

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

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

我猜微软将来会支持 getFileAsync()。

【讨论】:

  • 那么答案是,目前没有办法吗?这似乎是我的经验。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-02-27
  • 1970-01-01
  • 1970-01-01
  • 2013-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多