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

xiaoxiao2022-06-11  27

 高效读取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

 

 

 

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

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

转载请注明原文地址: https://www.6miu.com/read-4931892.html

最新回复(0)