我是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)
但是我需要输出像,单独的列,请你能帮助我吗?提前致谢
首先,如果您尝试将所有用户数据放在同一个文件中,而不是为每个用户覆盖它,则需要交换循环:
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文件的示例,如果它仍然不起作用,它适用于您.
| 归档时间: |
|
| 查看次数: |
9958 次 |
| 最近记录: |