0

我正在编写一个程序,它创建一个 csv 文件。我一开始就有问题。所以,我的代码是

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

4

2 回答 2

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
于 2013-05-08T09:48:22.087 回答
1

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

于 2013-05-08T09:40:38.870 回答