Создание полей, содержащих символ новой строки, с помощью Ruby CSV :: Writer - PullRequest
4 голосов
/ 05 мая 2009

Я хочу, чтобы CSV :: Writer генерировал разрыв строки внутри строки в кавычках:

A,B,"Line
Line",C 

Чтобы строка в Excel отображалась как:

A,B,Line,C
    Line

Можно ли запретить CSV: Writer удалять новые строки? Если нет, решит ли эта проблема переход на FasterCSV?

Ответы [ 2 ]

2 голосов
/ 05 июня 2009

Переключение на FasterCSV будет работать.

Из сеанса IRB:

  require 'fastercsv'
  FasterCSV.open("./testfile.csv", "w") do |csv|
    csv << ["row", "of", "CSV\nCSV", "data"]
  end
1 голос
/ 10 ноября 2009

Похоже, что вы можете, если вы установите для разделителя строк что-то отличное от значения по умолчанию (то есть \ 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"]

Надеюсь, это поможет.

...