如何在ruby 1.9.2中使用CSV gem创建CSV文件?

时间:2011-11-07 06:52:43

标签: ruby csv

我是ruby 1.9.2的新手。如何在单个ruby脚本文件中生成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

当我运行此脚本时,它将生成如下所示的输出,

         A                    B        C

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

但我需要输出,如单独的栏目,请你能帮助我吗?提前致谢

1 个答案:

答案 0 :(得分:6)

首先,如果您尝试将所有用户数据放在同一个文件中,而不是为每个用户覆盖它,则需要交换循环:

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

接下来,修复您的Excel(我怀疑输出是从它获取的,对吗?)使用逗号作为分隔符,而不是“空格或逗号”。

返回附带的文件内容以及CSV文件的示例,如果它仍然不起作用,它将为您工作。