我正在尝试使用Ruby Spreadsheet gem打开远程存储的电子表格。我的代码如下
require 'spreadsheet'
require 'open-uri'
book = Spreadsheet.open(url)
它给我的错误是Errno :: ENOENT:没有这样的文件或目录
通过将网址放入浏览器,它下载得很好,所以我知道网址很好。我有一些非常相似的代码使用FasterCSV工作得非常好,所以如果这是Spreadsheet的问题,或者我做错了什么,那就徘徊。
答案 0 :(得分:7)
您没有使用open-uri
,它会获取网址并将其公开为StringIO
对象(在大多数情况下,它的作用类似于IO
对象)。如果您这样做,Spreadsheet
类可能会起作用:
book = Spreadsheet.open(open(url))
第二个open
来自OpenURI
,它会将StringIO
个对象发送到Spreadsheet.open
。
答案 1 :(得分:1)
据我所知,来源于https://github.com/zdavatz/spreadsheet/blob/master/lib/spreadsheet.rb, 您需要在打开文件之前下载该文件。 Spreadsheet类上的open方法需要IO对象或磁盘上的物理路径:
def open io_or_path, mode="rb+"
...