rails_import_xls_and_csv

项目中经常会遇到需要导入excel以及csv等文件格式的数据到数据库中。
1.导入xls文件,文档
添加gem

1
gem 'spreadsheet', '1.0.0'

导入的只能是xls格式的,如果为xlsx格式的需要先手动转化为xls格式在进行导入,直接在rails c 中读取文件,然后操作

1
2
3
4
5
book = Spreadsheet.open('public/a.xls'); #如果是在rails c中直接读取的时候,最后记得加上分号,如果不加分号会全部读取,要等很长时间
sheet = book.worksheet 0 #后面的数字是代表读取那个工作区间的
sheet.each_with_index do |row, index|
p row[0] #index为行数 row为具体行里的内容,row[0]指的是取出第一列
end

2.导出xls文件

1
2
3
4
5
6
7
8
xls_report = StringIO.new
Spreadsheet.client_encoding = 'UTF-8'
book = Spreadsheet::Workbook.new
sheet1 = book.create_worksheet name: '测试' #工作区
sheet1.row(0).concat([第一列,第二列])
sheet1[1,0] = 'china'
sheet1.column(0).default_format = Spreadsheet::Format.new align: :right,weight: :bold #局右加粗
book.write xls_report #保存

3.导入csv文件,文档

1
2
3
CSV.foreach("path/to/file.csv") do |row|
# use row here...
end

4.导出csv文件

1
2
3
4
5
CSV.open("path/to/file.csv", "wb") do |csv|
csv << ["row", "of", "CSV", "data"]
csv << ["another", "row"]
# ...
end