RailsでCSV出力処理を実装する

INDEX PAGE

RailsCSV出力処理を実装する


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の出力を書くことが出来ました。


INDEX PAGE