मैं सिर्फ एक लाइन के लिए नीचे इस मिल गया है यह मेरा ले रहा है।
rows = [['a1', 'a2', 'a3'],['b1', 'b2', 'b3', 'b4'], ['c1', 'c2', 'c3'], ... ]
csv_str = rows.inject([]) { |csv, row| csv << CSV.generate_line(row) }.join("")
#=> "a1,a2,a3\nb1,b2,b3\nc1,c2,c3\n"
एक पंक्ति में एक csv को बचाने के ऊपर और के सभी करते हैं,।
File.open("ss.csv", "w") {|f| f.write(rows.inject([]) { |csv, row| csv << CSV.generate_line(row) }.join(""))}
नोट:
इस तरह बदलने के लिए सीएसवी को एक सक्रिय रिकॉर्ड डेटाबेस कुछ होगा मुझे लगता है कि
CSV.open(fn, 'w') do |csv|
csv << Model.column_names
Model.where(query).each do |m|
csv << m.attributes.values
end
end
हम्म @tamouse, कि सार के बिना मेरे लिए कुछ भ्रामक है सीएसवी स्रोत को पढ़ना, लेकिन आम तौर पर, मानते हैं कि आपके सरणी में प्रत्येक हैश की संख्या समान संख्या में के/वी जोड़े & है कि कुंजी हमेशा एक ही क्रम में होती है (यानी यदि अपने डेटा को बनाया गया है), इस काम करना चाहिए:
rowid = 0
CSV.open(fn, 'w') do |csv|
hsh_ary.each do |hsh|
rowid += 1
if rowid == 1
csv << hsh.keys# adding header row (column labels)
else
csv << hsh.values
end# of if/else inside hsh
end# of hsh's (rows)
end# of csv open
अपने डेटा इस स्पष्ट रूप से संरचित नहीं है, तो @ boulder_ruby के जवाब पर
जवाब आपके पास अच्छा है, लेकिन मुझे आपको सीएसवी का उपयोग न करने का आग्रह करता हूं। यदि आपके डेटा में टैब नहीं हैं, तो टैब-डिलीमिट की गई फ़ाइलों को निपटने के लिए बहुत आसान है क्योंकि उनमें इतनी अधिक freakin 'उद्धरण और भागने और शामिल नहीं है। यदि आपको सीएसवी का उपयोग करना चाहिए, तो निश्चित रूप से, वे ब्रेक हैं। –
@ बिल, सीएसवी मॉड्यूल अच्छी तरह से टैब-सीमांकित फ़ाइलों के साथ-साथ वास्तविक सीएसवी फाइलों को संभालता है। : Col_sep विकल्प आपको कॉलम सेपरेटर को "\ t" के रूप में निर्दिष्ट करने देता है और सब कुछ ठीक है। – tamouse
यहां CSV के बारे में अधिक जानकारी है http://docs.ruby-lang.org/en/2.1.0/CSV.html –