在Rails 5中使用smarter_csv的参考列号

时间:2019-02-07 19:09:15

标签: ruby-on-rails smartercsv

我目前正在使用smarter_csv gem将数据从CSV导入到我的Rails应用程序中。理想情况下,我想访问按数字而不是标题名称导入的列,因为标题名称可能与输入的数据不一致。

有人成功做到了吗?像下面的代码这样的东西会很完美。

SmarterCSV.process(file,
      col_sep: ',',
      force_simple_split: false,
      downcase_header: false,
      row_sep: :auto) do |row|

      row[1] #get data from whatever column number here

end

该行作为哈希返回,但是我认为我不能指望哈希的一致性。 预先感谢!

1 个答案:

答案 0 :(得分:1)

我还没有测试过,但是可以尝试Custom Header Transformations via Procs

change_headers_to_position = Proc.new {|headers|
  headers.each_with_index.map{|h, index| index + 1 }
}

options = {
  header_transformations: [:none, change_headers_to_position ]
}
data = SmarterCSV.process('/tmp/test.csv', options)