FasterCSV问题(Ruby)

问题描述:

我正在编写一个程序,它创建一个csv-File。我一开始就有问题。 所以,我的代码是FasterCSV问题(Ruby)

def create_csv 
     destfile = Rails.root.join("public", "reports", "statistic_csv#{id}.csv") 
     csv_string = FasterCSV.generate do |out| 
     out << ["row", "of", "CSV", "data"] 
     end 
    FasterCSV.open(destfile, "w") do |csv| 
     csv << csv_string 
    end 
    end 

我想,我会得到4列在输出文件中,像水木清华此行| CSV | |数据。但是我得到的是一行A1中的“row,of,CSV,data”。我该如何解决这个问题?提前致谢! PS。我使用红宝石1.8.7和FasterCSV 1.5.5

我认为你在Excel中打开它。 Excel可能不会将该文件检测为CSV文件。尝试将数据导入到Excel工作簿中,而不是在Excel中打开该文件。

+0

谢谢,我确实如你所说,现在看起来好多了。但是,现在有文本进行一些引号“\t CSV \t数据\t排 ” \t“布拉布拉\t \t ” – jenia 2013-05-08 09:53:34

您正在编码CSV字符串两次。这应该工作:

def create_csv 
    destfile = Rails.root.join("public", "reports", "statistic_csv#{id}.csv") 
    FasterCSV.open(destfile, "wb") do |csv| 
    csv << ["row", "of", "CSV", "data"] 
    end 
end 

你也可以指定自定义列分隔符:

FasterCSV.open(destfile, "wb", { :col_sep => "|" }) do |csv| 
    # ... 
end 
+0

呀,那帮手,非常感谢! – jenia 2013-05-08 10:02:21