使用Ruby CSV :: Writer生成包含换行符的字段

时间:2009-05-04 21:48:22

标签: ruby excel csv fastercsv

我想让CSV :: Writer在带引号的字符串中生成换行符:

A,B,"Line
Line",C 

这样该行将在Excel中显示为:

A,B,Line,C
    Line

是否可以阻止CSV:Writer剥离换行符? 如果没有,会切换到FasterCSV来解决这个问题吗?

2 个答案:

答案 0 :(得分:2)

切换到FasterCSV将起作用。

来自IRB会议:

  require 'fastercsv'
  FasterCSV.open("./testfile.csv", "w") do |csv|
    csv << ["row", "of", "CSV\nCSV", "data"]
  end

答案 1 :(得分:1)

如果您将行分隔符设置为默认值以外的其他内容(即\ r \ n或\ n),您似乎可以。这是一个示例(查看CSV.parse_row调用中指定的最后一个参数):

require 'csv'

src = "a,test\ntest,b\ra,test\ntest,b,c"
idx = 0
begin
  parsed = []
  parsed_cells, idx = CSV.parse_row(src, idx, parsed, ',', ?\r)
  puts "Parsed #{ parsed_cells } cells."
  p parsed
end while parsed_cells > 0

这是输出:

Parsed 3 cells.
["a", "test\ntest", "b"]
Parsed 4 cells.
["a", "test\ntest", "b", "c"]

希望这有帮助。