【问题标题】:CSV file with carriage returns in a column generated using Ruby CSV returns square character in ExcelCSV 文件在使用 Ruby 生成的列中带有回车符 CSV 在 Excel 中返​​回方形字符
【发布时间】:2012-10-19 15:27:45
【问题描述】:

我有一个脚本,它生成一个 CSV 文件并将其通过电子邮件发送给 Windows 上的许多用户。其中一列中有换行符,当我打开生成的文件时,我会在换行符之前看到方框。这是我正在尝试做的代码示例:

CSV.open("/tmp/reports.csv", "w") do |csv|
  csv << ["Date", "Description", "Comments", "Status"]
  csv << ["Foo","Bar","This\r\n is \r\n where \r\n my \r\n linebreaks \r\n are,"Baz"]
end

我尝试了我能想到的任意数量的换行符和编码组合,但没有任何乐趣。我怀疑它与this issue 有关,但解决方案涉及在导入后做一些事情,我不想让我的用户背负这些,特别是因为我在这里不与技术用户打交道。

有什么想法吗?

【问题讨论】:

    标签: ruby excel csv fastercsv


    【解决方案1】:

    尝试使用 gsubbing 输出 \r:

    csv << ["Foo","Bar","square \r\n here","Baz"].map{|col| col.gsub(/\r/, '')}
    

    【讨论】:

    • 实际上,它似乎确实适用于台式电脑上的 Excel,但当我通过 Citrix 运行 Excel 时却不行。将此标记为已接受,因为这是在逻辑上应该有效的答案。
    • 它不会是可移植的,因为不同平台上的换行符不同。 \n 虽然是您当时碰巧使用的任何平台上的换行符。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-29
    • 1970-01-01
    • 2011-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-23
    相关资源
    最近更新 更多