2013-02-20 29 views
0

如果我將數據行輸出爲CSV格式的CSV文件,但每行的項目數量未知,存儲在數組中,如何包含所有項目?如何輸出未知數量的項目

例如,對於第一行,我有一個固定的單元格,其後跟着X個編號項目,這可能是第一行中的2,而第二行中的20。如果它總是2我會這樣做:

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

但是我怎麼能包括更多隻有當需要?

+0

CSV文件通常支持在行中缺少數據的想法。他們將輸出一系列逗號,標記缺少數據的字段。我不確定在讀取新的字段長度時它會如何反應。 – 2013-02-20 18:00:49

回答

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}"而不是簡單地幾乎總是多餘的。

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 

的圖示運算符(*)可能給你你正在尋找的靈活性。

Regards,