新手问题 上传 Excel 文件,是怎么进行处理的?

QueXuQ · 2012年10月23日 · 最后由 echo 回复于 2013年07月07日 · 3975 次阅读
gem 'carrierwave'  #上传工具

我把 excel 文件传上去了,怎么把对应的名字等等的,存入数据库对应的 table 中呢? 请问各位是用什么方法的?还是说有对应的 gem 可以选择呢?

安装gem 'spreadsheet'

def save_import
  uploader = ExcelUploader.new
  uploader.store!(params[:excel_file])
  book = Spreadsheet.open "#{uploader.store_path}"
  sheet1 = book.worksheet 0
  @users = []
  sheet1.each 1 do |row|
    p = User.new
    p.userid = row[0].to_i
    p.name = row[1]
    p.email = row[2].to_s
    if row[3].is_a?(Float)
      p.password = row[3].to_i.to_s
    else
      p.password = row[3].to_s
    end
    p.save
    #@users << p
  end

  uploader.remove!
  redirect_to admin_users_path
end

这个是我写的,可以工作

#1 楼 @chunlea https://github.com/voraz/spreadsheet 是这个吗?

#2 楼 @ywjno 谢谢。

我有点好奇的是,自己 liunx 服务器上需要不需要装 office?还有,win 下的 office 文件会不会传到 linux 出现差异的。

#3 楼 @QueXuQ 应该不会的,我的项目用了 Ubuntu 的 server,但是可以上传并导入 Excel。 不需要在 Office 装 Excel,Win32ole 没必要用吧

5 楼 已删除

#1 楼 @chunlea 你导入数据时有没有遇到这种情况,表格只有 10 行数据,但是导入了几千行,也就是把空行当成数据导入到数据库去了?如何解决的呢?判定 cell 空值也不管用啊

#6 楼 @echo 这个还真的没有遇到过

#6 楼 @echo 没有遇见过这样的问题,但是我最后还是没有倒 excel,所以我不知道上传 excel 需要做些什么,我最后是把 excel 另存为 csv,然后倒进去的。

@QueXuQ 嗯,好了,原来是判断空行的命令用错了,谢谢了!

@chunlea 嗯,我改好了~谢谢!

需要 登录 后方可回复, 如果你还没有账号请 注册新账号