2015-08-27 45 views
0

定的數組:轉換陣列CSV文件的紅寶石

a = [[111,"Tue, 30 Jun 2015 23:50:55 KST +09:00"],[123,"Tue, 30 Jun 2015 23:50:55 KST +09:00"]] 

而且我想這個數組轉換到一個新的CSV文件新柱這將是這樣的:

user_id | created_at 
-------------------- 
111  | Tue, 30 Jun 2015 23:50:55 KST +09:00 
123  | Tue, 30 Jun 2015 23:50:55 KST +09:00 

如何我可以在Ruby中執行此操作嗎? 在此先感謝。

+0

@sanfor但我想我的問題有點不同,因爲我的包括產生新的列。 – ZHH

+1

提供的數組無效。它應該是這樣的'a = [[111,「星期二,2015年6月30日23時50分55秒KST +09:00」],[123,「星期二,2015年6月30日23時50分55秒KST +09:00 「]]' –

+0

@gagangami糾正 – ZHH

回答

1

我成功地做到這(第2編輯)適當的縮進模型

headers = ["user_id", "created_at"] 
CSV.open("myfile.csv", "w", :col_sep => "\t| ", :headers => true) do |csv| 
    csv << headers 
    csv << ["-"*(headers.join.length+4*headers.length)] #Header separator in the length of header columns + tabs 
    a.each {|row| csv << row } #Adding rows for each element of a 
end 
0
def export 
    array = [[111,"Tue, 30 Jun 2015 23:50:55 KST +09:00"],[123,"Tue, 30 Jun 2015 23:50:55 KST +09:00"]] 

    csv_data = CSV.generate do |csv| 
    csv << [ "id","created_at"] 
    array.each do |array| 
    csv << [array[0],array[1]] 
    end 
    end 
    send_data(csv_data, :type => 'text/csv', :filename => 'data.csv') 
end 
0

製作方法,我希望這會爲你工作。從我測試。按你想要的方式工作。

CSV.generate(option) do |csv| 
    csv << ['user_id', 'created_at'] 
    [[111,"Tue, 30 Jun 2015 23:50:55 KST +09:00"],[123,"Tue, 30 Jun 2015 23:50:55 KST +09:00"]].each do |array| 
     csv << array 
    end 
end