嘿伙计,所以我试图通过ruby gem“creek”解析excel文件,它准确地解析行但我想只检索列,例如只有“A”cloumn中的数据。正确输出整个Excel文档。
require 'creek'
creek = Creek::Book.new 'Final.xlsx'
sheet= creek.sheets[0]
sheet.rows.each do |row|
puts row # => {"A1"=>"Content 1", "B1"=>nil, C1"=>nil, "D1"=>"Content 3"}
end
任何建议都将不胜感激。
答案 0 :(得分:3)
Creek无法轻松提取列信息,因为它将列和行存储在一个字符串哈希键中。
更受欢迎的the source允许您执行sheet.column(1)
之类的操作并获取整个列。非常简单。
如果你绝对必须拥有小溪,我注意到有一个名为Roo的小溪附加组件,它增加了一些列提取能力。例如:
sheet.rows.each { |r|
puts "#{r.index} #{r.get('A')} - #{r.get('B')}"
}
最后,如果您想使用Creek并且没有附加组件,请使用Hash#select:
sheet.rows.each do |row|
puts row.select{ |k,v| ["A", "B"].include? k[0]}
end
答案 1 :(得分:0)
要阅读各个列,可以使用Creek :: Sheet#simple_rows方法
例如,要阅读第一和第三列:
require 'creek'
creek = Creek::Book.new 'Final.xlsx'
sheet_first = creek.sheets.first
# read first column A
col_first = sheet_first.simple_rows.map{|col| col['A']} #=> Array containing the first column
# read third column C
col_third = sheet_first.simple_rows.map{|col| col['C']} #=> Array containing the third column