使用 Rails 5 中的smarter_csv引用列号



我目前正在使用 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

该行作为哈希返回,但我认为我不能指望哈希的顺序是一致的。提前感谢!

我还没有测试过这个,但也许可以通过 Probe 尝试自定义标头转换

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)