引用符で囲まれた文字列内で CSV::Writer に改行を生成させたい:
A,B,"Line
Line",C
行が Excel で次のように表示されるようにします。
A,B,Line,C
Line
CSV:Writer が改行を削除しないようにすることは可能ですか? そうでない場合、FasterCSV に切り替えるとこの問題は解決しますか?
現在の CSV モジュールは、個々のセルで改行文字をサポートしています。
IRB セッションから:
require 'csv'
CSV.open("./testfile.csv", "w") do |csv|
csv << ["row", "of", "CSV\nCSV", "data"]
end
FasterCSV への切り替えも機能します。別の IRB セッションから:
require 'fastercsv'
FasterCSV.open("./testfile.csv", "w") do |csv|
csv << ["row", "of", "CSV\nCSV", "data"]
end
行セパレーターをデフォルト以外 (\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"]
お役に立てれば。