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

pra*_*abu 0 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
Run Code Online (Sandbox Code Playgroud)

当我运行这个脚本.它将产生如下输出,

         A                    B        C

0      Report
1      Name,Product,Item    Count
2      user1,PD123,10,990   
Run Code Online (Sandbox Code Playgroud)

但是我需要输出像,单独的列,请你能帮助我吗?提前致谢

phi*_*kov 6

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

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

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

返回附带的文件内容和CSV文件的示例,如果它仍然不起作用,它适用于您.