Piszę program, który tworzy plik csv. Na początku mam problem. Więc mój kod to
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
Pomyślałem, że otrzymam 4 kolumny na wyjściuplik, coś jak ten wiersz | danych | csv | danych. Ale otrzymuję „wiersz, CSV, dane” w jednej komórce A1. Jak mogę rozwiązać problem? Z góry dziękuję! PS. Używam Ruby 1.8.7 i FasterCSV 1.5.5
Odpowiedzi:
2 dla odpowiedzi № 1Kodujesz ciąg CSV dwa razy. To powinno działać:
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
Możesz także określić niestandardowy separator kolumn:
FasterCSV.open(destfile, "wb", { :col_sep => "|" }) do |csv|
# ...
end
1 dla odpowiedzi nr 2
Zakładam, że „otwierasz to w programie Excel. Program Excel może nie wykrywać pliku jako pliku CSV. Spróbuj zaimportować dane do skoroszytu programu Excel, w przeciwieństwie do otwierania pliku w programie Excel.