我想我可能错过了一些非常简单的东西,因为我是这个宝石的新手(以及一般的Ruby / Rails),但是我们走了......
我刚刚从RubyGems安装了Spreadsheet gem并使用Bundler来安装它。之后,我重新启动了我的本地服务器。
我想从我拥有的Excel文件创建数据库,但我正在努力打开该文件。我的代码是:
require 'spreadsheet'
Spreadsheet.client_encoding = 'UTF-8'
book = Spreadsheet.open('C:\Users\Lev Berlin\Documents\Personal\Projects
\FactsRus\Nutritional Analysis Models\Data for Rails model import.xls')
sheet1 = book.worksheet('Sheet1')
运行> rails runner script / load_excel_file.rb(上面有代码)后得到的错误是:
权限被拒绝 - C:\ Users ... import.xls(Errno :: EACCES)
像我说的那样 - 我可能错过了很简单的东西,但任何指针都会受到赞赏。答案 0 :(得分:2)
问题是我试图读取的文件是开放的! N00b错了,但我最终弄明白了。
感谢大家的期待。
答案 1 :(得分:0)
在gem文件中使用parseexcel而不是电子表格。
gem 'parseexcel'
在db / seed.rb文件中写下以下代码将excel文件放在project / db / data文件夹中
def seed_cities
workbook = Spreadsheet::ParseExcel.parse("#{Dir.getwd}/db/data/cities.xls")
workbook.worksheet(0).each(1) { |row|
next if row == nil;
col = row.at(0);
next if col == nil;
id = col.to_s('latin1').strip;
next if id == "";
country_id = row.at(1).to_s('latin1').strip;
state_id = row.at(2).to_s('latin1').strip;
name = row.at(3).to_s('latin1').strip;
code = row.at(4).to_s('latin1').strip;
city = City.new(:country_id => country_id, :state_id => state_id, :name => name, :code => code)
unless city.save
city.errors.each { |e| puts "Database Error: ", e }
end
}
end
seed_cities()
这是我的cities.xls excel文件
id country_id state_id name code
1 7 77 Lahore LHR
2 7 77 Islamabad ISB