2012-11-26 56 views
2

我想打開使用Ruby Spreadsheet gem遠程存儲的電子表格。我的代碼如下Ruby電子表格不打開遠程文件

require 'spreadsheet' 
require 'open-uri' 

book = Spreadsheet.open(url) 

它返回我errno的:: ENOENT的錯誤:沒有這樣的文件或目錄

通過將網址到瀏覽器,它的下載很好,所以我知道網址很好。我有一些使用FasterCSV的非常相似的代碼,它工作得非常好,所以如果這是Spreadsheet的問題,或者我做錯了事情,那麼這個代碼會變得很流行。

+0

我不用東西遠程文件可以打開使用'Spreadsheet xls'嘗試下載它,然後打開它糾正我,如果我錯了 – Viren

+0

我不知道open-uri會改變任意類中的打開的調用。 –

回答

5

您沒有使用open-uri,這將獲取URL,並公開爲StringIO對象(其工作方式:在電子表格類的開放式方法需要一個IO對象或磁盤上的物理路徑大多數情況下爲IO對象)。如果你這樣做,而不是Spreadsheet類可能工作:

book = Spreadsheet.open(open(url)) 

第二openOpenURI這將StringIO對象發送到Spreadsheet.open

+0

這是一種享受。我沒有意識到我原來並沒有使用open-uri,但它現在總是有意義的 – user1756535

+0

我試着用open(url),現在它說:讀取文件時出錯:沒有這樣的文件或目錄@ rb_sysopen - # – Varun

+0

@Varun你是否需要'open-uri'? –