如果我將數據行輸出爲CSV格式的CSV文件,但每行的項目數量未知,存儲在數組中,如何包含所有項目?如何輸出未知數量的項目
例如,對於第一行,我有一個固定的單元格,其後跟着X個編號項目,這可能是第一行中的2,而第二行中的20。如果它總是2我會這樣做:
CSV.open('file.csv', 'a') do |csv|
csv << ["#{Some_text}","#{cell2}","#{cell3}"]
end
但是我怎麼能包括更多隻有當需要?
如果我將數據行輸出爲CSV格式的CSV文件,但每行的項目數量未知,存儲在數組中,如何包含所有項目?如何輸出未知數量的項目
例如,對於第一行,我有一個固定的單元格,其後跟着X個編號項目,這可能是第一行中的2,而第二行中的20。如果它總是2我會這樣做:
CSV.open('file.csv', 'a') do |csv|
csv << ["#{Some_text}","#{cell2}","#{cell3}"]
end
但是我怎麼能包括更多隻有當需要?
由於<<
方法接受一個數組,你可以根據需要建立儘可能多列,並通過他們使用簡單的數組數學:
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}"
而不是簡單地幾乎總是多餘的。
你也可以這樣做:
*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,
CSV文件通常支持在行中缺少數據的想法。他們將輸出一系列逗號,標記缺少數據的字段。我不確定在讀取新的字段長度時它會如何反應。 – 2013-02-20 18:00:49