2009-05-04 50 views
3

我要让CSV ::作家产生一个带引号的字符串内换行:包含换行符使用Ruby CSV生成领域::作家

A,B,"Line 
Line",C 

因此该行会在Excel中显示为:

A,B,Line,C 
    Line 

是否有可能阻止CSV:Writer删除换行符? 如果不是,将切换到FasterCSV解决这个问题?

回答

2

切换到FasterCSV将起作用。

由IRB会议:

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

希望这有助于。