Ruby Spreadsheet没有打开远程文件

时间:2012-11-26 14:28:49

标签: ruby-on-rails ruby spreadsheet

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

require 'spreadsheet'
require 'open-uri'

book = Spreadsheet.open(url)

它给我的错误是Errno :: ENOENT:没有这样的文件或目录

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

2 个答案:

答案 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+" ...