Rails:Excel列,种子

我创build了一个列ID,任务,说明的Excel表

我find这个,并把它放在我的种子.rb:

require 'spreadsheet' Spreadsheet.open('/db/data/uebung.xls') do |uebung| book.worksheet('Sheet1').each do |row| break if row[0].nil? puts row.join(',') end end 

我得到这个消息:

  [DEPRECATED] By requiring 'parseexcel', 'parseexcel/parseexcel' and/or 'parseexcel/parser' you are loading a Compatibility layer which provides a drop-in replacement for the ParseExcel library. This code makes the reading of Spreadsheet documents less efficient and will be removed in Spreadsheet version 1.0.0 

你怎么看。 是不是很容易导入excel数据?

我使用roo导入excel到我的rails应用程序。 这并不难。 如果你愿意的话,你可以看Ryan Bates 的railscast 。

我给你我的示例代码

的Gemfile

 gem 'rubyzip' gem 'spreadsheet' gem 'nokogiri' gem 'roo' 

控制器:

 def import @trainerone = Trainerone.find(params[:trainerone_id]) Trainerone.import(params[:file], @trainerone.id) redirect_to @trainerone, notice: "Import Success." end 

模型:

 def self.import(file, trainer_id) trainerone = Trainerone.find(trainer_id) spreadsheet = open_spreadsheet(file) header = spreadsheet.row(1) (2..spreadsheet.last_row).each do |i| row = Hash[[header, spreadsheet.row(i)].transpose] trainer = Trainerone.create! row.to_hash end end def self.open_spreadsheet(file) case File.extname(file.original_filename) when '.csv' then Csv.new(file.path, nil, :ignore) when '.xls' then Excel.new(file.path, nil, :ignore) when '.xlsx' then Excelx.new(file.path, nil, :ignore) else raise "Unknown file type: #{file.original_filename}" end end 

视图:

 <%= form_tag import_trainerones_path(@trainerone.id), multipart: true do %> <%= file_field_tag :file %> <%= submit_tag "Import" %> <% end %> 

这个import_trainerones_path是从你的route ,指向你的action: import在你的trainerone controlleraction: import (查看上面的控制器)

希望可以帮助你..!