2011-11-07 108 views
0

我是ruby 1.9.2的新手。如何在單個ruby腳本文件中生成CSV文件?如何在ruby 1.9.2中使用CSV gem創建CSV文件?

在這裏,我寫了一個Ruby腳本,

require 'rubygems' 
require 'pg' 
require 'active_record' 
require 'csv' 

class AttachEmail 

def generate_csv 
begin 
filename = "csvout.csv" 
users = User.all 
users.each do |u| 
    products = Product.find(:all,:conditions=>["user_id=?",u.id]) 
    CSV.open(filename, 'w') do |csv| 
    # header row 
user_name = u.name 
     csv << ['Report'] 
     csv << ['Name','Product', 'Item Count'] 
     products.each do |product| 
     csv << [user_name, product.title,product.count] 
     end 
end 
end 
rescue Exception => e 
    puts e 
end 
end 
generate= AttachEmail.new 
generate.generate_csv 

當我運行這個script.it會產生類似下面的輸出,

  A     B  C 

0  Report 
1  Name,Product,Item Count 
2  user1,PD123,10,990 

但我需要輸出一樣,單獨的列,可以請你愛我嗎?在此先感謝

+4

文檔的哪一部分會給您帶來困難? http://ruby-doc.org/stdlib-1.9.3/libdoc/csv/rdoc/CSV.html –

+0

嗨@mu,我試過了,請看上面編輯的問題。 – prabu

回答

6

首先,你需要交換的循環,如果你正試圖把所有的用戶數據在同一個文件,而不是覆蓋它爲每個用戶:

CSV.open(filename, 'w') do |csv| 
    users.each do |u| 
    products = Product.find(:all,:conditions=>["user_id=?",u.id]) 

接下來,解決您的Excel(我懷疑是從它輸出的,對嗎?)使用逗號作爲分隔符,而不是「空格或逗號」。

回來後附上的文件內容和一個CSV文件的例子,如果它仍然無法正常工作。

+0

謝謝!它的工作。 – prabu