3

我正在尝试使用 Ruby Spreadsheet gem 打开远程存储的电子表格。我的代码如下

require 'spreadsheet'
require 'open-uri'

book = Spreadsheet.open(url)

它向我返回 Errno::ENOENT 的错误:没有这样的文件或目录

通过将 url 放入浏览器,它可以很好地下载,所以我知道 url 很好。我有一些使用 FasterCSV 的非常相似的代码,它工作得非常好,所以如果这是电子表格的问题,或者我做错了什么,那就徘徊。

4

2 回答 2

7

您没有使用open-uri,它将获取 URL 并将其作为对象公开(在大多数情况下StringIO,它的工作方式类似于对象)。如果您这样做,IO该课程可能会起作用:Spreadsheet

book = Spreadsheet.open(open(url))

第二个是将对象发送到的openfrom which 。OpenURIStringIOSpreadsheet.open

于 2012-11-26T15:23:16.147 回答
1

据我所知,在https://github.com/zdavatz/spreadsheet/blob/master/lib/spreadsheet.rb,您需要先下载该文件,然后再打开它。Spreadsheet 类的 open 方法需要一个 IO 对象或磁盘上的物理路径:

def open io_or_path, mode="rb+" ...

于 2012-11-26T14:45:40.323 回答