Railsを介してデータベースにインポートしたいExcelスプレッドシートのデータがあります。Rails3.2.3とRuby1.9.2を使用しています。
データはユーザー名とパスワードで、ファイル名はmember.xlsx
です。
<%= form_for @member do |f| %>
<%= f.text_field :import,
:maxlength=>'50',
:style=>'width: 250px;',
:placeholder => 'browse file *.sql or *.xlsx' %>
<%= f.submit %><% end %>
私のテーブル:
create_table :members do |t|
t.string :username
t.string :password_hash
t.string :password_salt
解決しました
解決
Excelファイルの解析にスプレッドシートgemを使用し、ExcelファイルのアップロードにCarrierWavegemを使用しています。ユーザー用にdeviseモデルを使用しているため、ファイルをインポートするためのコントローラーは次のようになります。
def import
if params[:excel_file].nil?
redirect_to user_new_import_path, :flash => { :error => 'You have not selected a file'}
else
test_file = params[:excel_file]
file = ExcelUploader.new
file.store!(test_file)
book = Spreadsheet.open "#{file.store_path}"
sheet1 = book.worksheet 0
sheet1.each 1 do |row|
name = row[0]
email = row[2]
generated_password = Devise.friendly_token.first(6)
temp_password = generated_password
@user = User.create(:name => name, :email => email, :password => temp_password, :password_confirmation => temp_password)
UserMailer.password_send(@user).deliver
end
if @user.save
redirect_to users_path, :notice => "success"
else
redirect_to new_import_user_path, :flash => { :error => 'error. try again' }
end
end
end