作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个简单的 Rails 应用程序,用户需要通过 csv 或 Excel 上传内容。我并不总是想假设用户知道数据库中的所有必填字段,我只是希望用户知道第一列是必填的,并且第一列上放置的任何内容都会进入 mobile_number
列在数据库中。我正在谈论的代码示例如下。我正在使用 roo gem 。这是一个简单的应用程序,因此联系人表中仅使用两个数据库列。
def load_imported_contacts
spreadsheet = open_spreadsheet
header = spreadsheet.row(1)
(2..spreadsheet.last_row).map do |i|
row = Hash[[header, spreadsheet.row(i)].transpose]
contact = Contact.find_by_id(row["id"]) || Contact.new
contact.name = "content of the second field(optional)"
contact.mobile_number = "content in the first(required and must be the first column)"
contact.save!
end
end
def open_spreadsheet
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
最佳答案
经过一番研究,我终于解决了我的问题。我应该在发布这个问题之前就这样做。解决办法如下
def load_imported_contacts
spreadsheet = open_spreadsheet
header = spreadsheet.row(1)
(1..spreadsheet.last_row).map do |i|
row = Hash[[header, spreadsheet.row(i)].transpose]
contact = Contact.find_by_id(row["id"]) || Contact.new
contact.mobile_number = spreadsheet.cell(i,'A')
contact.name = spreadsheet.cell(i,'B')
contact
end
end
关于ruby-on-rails - 如何在rails中使用确定csv和excel文件第一行的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16037026/
我是一名优秀的程序员,十分优秀!