0

CSV gemを使用してデータの行をCSVファイルに出力しているが、配列に格納されている各行のアイテム数が不明な場合、すべてのアイテムを含めるにはどうすればよいですか?

たとえば、最初の行には固定セルがあり、その後にX番号の項目が続きます。これは、最初の行では2で、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

を使用して、複数の配列を1つの配列に結合することができます+。これらの配列の長さに固有の制限はなく、CSVではすべての行に同じ数の列を含める必要はありません。

"#{var}"注意として、単にではなく、言うのはほとんどの場合冗長ですvar

于 2013-02-20T18:15:48.813 に答える
0

次のこともできます。

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

スプラット演算子(*)を使用すると、探している柔軟性が得られる場合があります。

よろしく、

于 2013-02-20T18:21:46.173 に答える