4

引用符で囲まれた文字列内で CSV::Writer に改行を生成させたい:

A,B,"Line
Line",C 

行が Excel で次のように表示されるようにします。

A,B,Line,C
    Line

CSV:Writer が改行を削除しないようにすることは可能ですか? そうでない場合、FasterCSV に切り替えるとこの問題は解決しますか?

4

2 に答える 2

2

現在の 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
于 2009-06-05T17:22:47.900 に答える
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"]

お役に立てれば。

于 2009-11-10T02:16:51.940 に答える