我是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
但我需要输出,如单独的栏目,请你能帮助我吗?提前致谢
答案 0 :(得分:6)
首先,如果您尝试将所有用户数据放在同一个文件中,而不是为每个用户覆盖它,则需要交换循环:
CSV.open(filename, 'w') do |csv|
users.each do |u|
products = Product.find(:all,:conditions=>["user_id=?",u.id])
接下来,修复您的Excel(我怀疑输出是从它获取的,对吗?)使用逗号作为分隔符,而不是“空格或逗号”。
返回附带的文件内容以及CSV文件的示例,如果它仍然不起作用,它将为您工作。