Rails 高效读取excel的gem介绍-----creek

 高效读取excel的gem-----creek

  • 先大家推荐一款高效读取excel的gem,其实下载excel的gem有很多,但是读取excel的gem比较少。而其中最高效、最cool的就是这一款gem-------creek,一听名字就很cool哈哈,拉风,其官方github地址如下:
  • creek: https://github.com/pythonicrubyist/creek
  • 其实github上写的比较权威了,我简单说下我的实际使用,这个gem使用起来明显高效很多,我遍历1万多行的数据,大约执行了1分钟左右,其余的gem基本就卡死了

安装:

  • gem  install creek

地球人都知道,进入下一话题:

一个官方的demo:基本说明了gem的用法,但是具体输出每一行的数据,我没有看到怎么输出,我就研究了一下,用了个笨方法,如果大家有好的方法,欢迎告知,谢谢谢谢,

require 'creek'
creek = Creek::Book.new 'spec/fixtures/sample.xlsx'
sheet = creek.sheets[0]

sheet.rows.each do |row|
  puts row # => {"A1"=>"Content 1", "B1"=>nil, "C1"=>nil, "D1"=>"Content 3"}
end

sheet.simple_rows.each do |row|
  puts row # => {"A"=>"Content 1", "B"=>nil, "C"=>nil, "D"=>"Content 3"}
end

sheet.rows_with_meta_data.each do |row|
  puts row # => {"collapsed"=>"false", "customFormat"=>"false", "customHeight"=>"true", "hidden"=>"false", "ht"=>"12.1", "outlineLevel"=>"0", "r"=>"1", "cells"=>{"A1"=>"Content 1", "B1"=>nil, "C1"=>nil, "D1"=>"Content 3"}}
end

sheet.simple_rows_with_meta_data.each do |row|
  puts row # => {"collapsed"=>"false", "customFormat"=>"false", "customHeight"=>"true", "hidden"=>"false", "ht"=>"12.1", "outlineLevel"=>"0", "r"=>"1", "cells"=>{"A"=>"Content 1", "B"=>nil, "C"=>nil, "D"=>"Content 3"}}
end

sheet.state   # => 'visible'
sheet.name    # => 'Sheet1'
sheet.rid     # => 'rId2'

 具体某一行、一列读取

  • 之前有个需求要从excel读取数据导入到数据库,我就读取遍历了一下,用的感觉挺笨的方法,但是也实现了,先把sheet.rows这个数组遍历出row和索引,因为第一行是标题,所以我跳过了读取,只读A、B两列的从一行号开始的数据
  • 下面源码奉上:小弟告辞!
file_path = "#{Rails.root}/public/xxx.xlsx"
creek = Creek::Book.new file_path
sheet = creek.sheets[0]
puts sheet.rows.count
sheet.rows.each_with_index do |row, index|
  next if index == 0
  name = row["B#{index + 1}"]
  mobile = row["A#{index + 1}"]
end

-------每日感悟-------

光想不做你永远都是纸上谈兵,实践出真知!

猜你喜欢

转载自blog.csdn.net/weixin_42428631/article/details/83317124