読者です 読者をやめる 読者になる 読者になる

ウェブサービスを作っています。

FasterCSV でヘッダを考慮

あけましておめでとうございます。


csv ファイルでは、しばしば 1 行目をカラム説明行として使う場合があります。
FasterCSV では、これを考慮して出力することができるんですね。

require 'rubygems'
require 'fastercsv'

data = [
  { 'ID' => 1, 'name' => 'taro', 'sex' => 'male', 'age' => 20 },
  { 'ID' => 2, 'name' => 'hanako', 'sex' => 'female', 'age' => 40 }
]

FasterCSV.open('result.csv', 'w', :headers => %w(ID name sex age), :write_headers => true, :force_quotes => true) do |csv|
  data.each { |v| csv << v }
end

結果

"ID","name","sex","age"
"1","taro","male","20"
"2","hanako","female","40"

:headers オプションで、カラム名を列挙した配列を指定、あとはカラム名がキーのハッシュを << メソッドに渡す。
:force_quotes => true にしている理由は、excel でうまく開けないからというだけで、深い理由はありません。