0

如果我使用 CSV gem 将数据行输出到 CSV 文件,但每行的项目数量未知,存储在数组中,如何包含所有项目?

例如,对于第一行,我有一个固定单元格,后跟 X 个项目,第一行可能是 2,但第二行可能是 20。如果总是 2 我会这样做:

CSV.open('file.csv', 'a') do |csv|
   csv << ["#{Some_text}","#{cell2}","#{cell3}"]
end

但是我怎样才能仅在需要时才包含更多内容?

4

2 回答 2

4

由于该<<方法需要一个数组,因此您可以构建任意数量的列,并使用简单的数组数学将它们传递:

CSV.open('file.csv', 'a') do |csv|
  csv << [ 'Fixed cell' ] + [ 1, 2, 3 ]
  csv << [ 'Fixed cell' ] + [ 1, 2, 3, 4, 5, 6, 7 ]
  csv << [ 'Fixed cell' ] + other_array
end

可以使用 . 将多个数组组合成一个奇异数组+。这些数组的长度没有固有的限制,并且 CSV 中没有要求所有行具有相同的列数。

"#{var}"请注意,说而不是简单地说几乎总是多余的var

于 2013-02-20T18:15:48.813 回答
0

You could also do:

*cells = cell1,cell2,celln   # You can add as many as you need
CSV.open('file.csv', 'a') do |csv|
  csv << [ 'Fixed cell' ] + cells
end

The splat operator(*) might give you the flexibility you're looking for.

Regards,

于 2013-02-20T18:21:46.173 回答