本週早些時候我問了問題,它工作正常。我只是用一個稍大的電子表格來嘗試它,但由於某種原因,它似乎不起作用。將CSV導入到Rails數據庫中
我的代碼如下:
require 'roo'
xlsx = Roo::Spreadsheet.open(File.expand_path('../Downloads/unistats/LOCATION.csv'))
xlsx.each_row_streaming(offset: 1) do |row|
Location.find_or_create_by(ukprn: row[0].value, accomurl: row[1].value, instbeds: row[3].value, instlower: row[4].value, instupper: row[5].value, locid: row[6].value, locname: row[7].value, lat: row[9].value, long: row[10].value, locukprn: row[11].value, loccountry: row[12].value, privatelower: row[13].value, privateupper: row[14].value, suurl: row[15].value)
end
但不像上一次,這次就要到了這個錯誤:
NoMethodError: undefined method `each_row_streaming' for #<Roo::CSV:0xb9e0b78>
Did you mean? each_row_using_tempdir
該文件是一個CSV,而不是的.xlsx但不該」沒有什麼不同。
任何想法我做錯了什麼?
爲什麼不應該有所作爲? –
由於Roo gem文檔聲明它適用於兩種文件類型。使用'header = xlsx.row(1)'它顯示所有的列都在預期的位置。 –
對,它可以打開它,但你必須使用不同的方法來讀取值。 –