RailsでCSV出力処理を実装する
Railsでデータのエクスポート処理を作ろうとして
CSVの出力共通関数を作ろうとしたのですが
Railsには既に便利なCSV出力機能が備わっていました。
CSV::Writerというライブラリを利用すると便利です。
http://www.sakalab.org/prog-ruby/ruby-man-html-20080121/CSV_Writer.html
使い方は、まずrequireでcsvライブラリを記述します。
require 'csv'
続いて、実際にファイルの生成と、
生成したファイルをリプライする方法ですが、こんな感じです。
class hoge
def exprt
##データベースからの検索処理
hoges = Hoge.find(:all)##出力ファイルのコンテンツタイプの決定
cntnt_type = ""if request.user_agent =~ /windows/i then
##クライアント環境がWindowsの場合はExcel形式で返す
cntnt_type = "application/vnd.ms-excel"
else
##それ以外の場合にはCSV形式で返す
cntnt_type = "text/csv"
end##ファイル名称の設定
file_name = "hoge.csv"##CSVオブジェクトを生成し、データをセットしていく
CSV::Writer.generate(output = "") do |csv|
for hoge in hoges
csv << [hoge.hoge ,hoge.fuga ]
end
end##CSVファイルの出力
send_data(output, :type => cntnt_type, :filename => file_name)
end
これでかなり簡単にCSVの出力を書くことが出来ました。