2013-05-08 2 views
0

Я пишу программу, которая создает файл csv. И у меня проблема в самом начале. Итак, мой кодПроблемы с FasterCSV (Ruby)

def create_csv 
     destfile = Rails.root.join("public", "reports", "statistic_csv#{id}.csv") 
     csv_string = FasterCSV.generate do |out| 
     out << ["row", "of", "CSV", "data"] 
     end 
    FasterCSV.open(destfile, "w") do |csv| 
     csv << csv_string 
    end 
    end 

Я думал, я буду получать 4 колонки в выходном файле, как чему-л этой строки | из | CSV | данных. Но я получаю «row, of, CSV, data» в одной ячейке A1. Как я могу решить проблему? Заранее спасибо! PS. Я использую ruby ​​1.8.7 и FasterCSV 1.5.5

ответ

1

Предполагаю, что вы открываете это в Excel. Excel не может обнаружить файл как файл CSV. Попробуйте импортировать данные в книгу Excel, а не открывать файл в Excel.

+0

Спасибо, я сделал, как вы сказали, и теперь он выглядит гораздо лучше. Но теперь есть некоторые кавычки в тексте «ряд \t \t из CSV \t данных » \t «блабла \t \t » – jenia

2

Вы кодируете строку CSV дважды. Это должно работать:

def create_csv 
    destfile = Rails.root.join("public", "reports", "statistic_csv#{id}.csv") 
    FasterCSV.open(destfile, "wb") do |csv| 
    csv << ["row", "of", "CSV", "data"] 
    end 
end 

Вы также можете указать разделитель пользовательских колонок:

FasterCSV.open(destfile, "wb", { :col_sep => "|" }) do |csv| 
    # ... 
end 
+0

Да, хелперы, спасибо много! – jenia

Смежные вопросы