FasterCSV(Ruby)的问题

时间:2013-05-08 09:35:26

标签: ruby fastercsv

我正在编写一个程序,它创建了一个csv-File。我一开始就遇到了问题。 所以,我的代码是

  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 | data一样。但我得到的是一个单元格A1中的“row,of,CSV,data”。我该如何解决这个问题?提前致谢! PS。我使用ruby 1.8.7和FasterCSV 1.5.5

2 个答案:

答案 0 :(得分:2)

您正在对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

答案 1 :(得分:1)

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