Est-il possible de changer le séparateur de champ par défaut de virgule en un autre caractère, par exemple '|'
pour l'exportation?
Voici un exemple utilisant un onglet à la place.
Vers un fichier:
CSV.open("myfile.csv", "w", {:col_sep => "\t"}) do |csv|
csv << ["row", "of", "CSV", "data"]
csv << ["another", "row"]
# ...
end
Pour une chaîne:
csv_string = CSV.generate(:col_sep => "\t") do |csv|
csv << ["row", "of", "CSV", "data"]
csv << ["another", "row"]
# ...
end
Voici la documentation actuelle sur CSV: http://Ruby-doc.org/stdlib/libdoc/csv/rdoc/index.html
La bibliothèque CSV précédente a été remplacée par FasterCSV in Ruby 1.9.
require "csv"
output = CSV.read("test.csv").map do |row|
row.to_csv(:col_sep => "|")
end
puts output
CSV::Writer
a une méthode generate, qui accepte une chaîne de séparation comme argument.
#!/usr/bin/env Ruby
# +++ Ruby 1.8 version +++
require "csv"
outfile = File.open('csvout', 'wb')
CSV::Writer.generate(outfile, '|') do |csv|
csv << ['c1', nil, '', '"', "\r\n", 'c2']
end
outfile.close