こんにちは、KBMJの中平@railsエンジニアです。

今回は、ruby on railsでデータをCSVファイル出力が簡単にできる プラグインついて書きます。

 

前回、ruby on railsでデータをExcelファイルに出力する方法を書きましたが

ExcelファイルよりCSVファイルに出力する機会が多いだろうと思います。

 

また、railsでCSVファイルを出力するのは、さまざまな方法がありますが、

今回は設定も簡単で、コードの記述も比較的少なくてすむ to_csvというpluginの使い方について書こうと思います。

 

環境


OS : Windows Vista
Ruby : 1.8.6
ruby on rails : 2.1 (2系以上ならto_csvが使えると思います)


to_csvのインストール


ruby script/plugin install git://github.com/arydjmal/to_csv.git


fastercsvのインストール

to_csv はfastercsvが必要なため
gem install fastercsv



コントローラーのメソッドに以下のコードを記述

 

def index
    @users = User.all

    respond_to do |format|
            format.html
            format.xml { render :xml => @users }
            format.csv { send_data @users.to_csv }
    end
end


@users.to_csv で取得したデータをCSV形式にしています。
また README.rdocに書いているオプションを解説すると
 
 @users.to_csv  
 すべてのカラムを出力
 
 @users.to_csv(:only => [:last_name, :role]) 
 onlyで指定したカラムを出力 
 
  @users.to_csv(:headers => false) 
 先頭行にカラム名を出力しない
  
  @users.to_csv(:except => [:last_name, :role]) 
 exceptで指定したカラム以外を出力
 
  @users.to_csv(:except => :role, :methods => :admin?) 
 :methodsはカラム名?で記述したカラムのデータのnullを判定しているぽい

 

 nullだったらfalse null以外はtrueを表示している



このような動作をするようです。
このあたりは、find時に出力データをrails側で制御してもいいかもしれません。

 

実際にruby on railsでデータをCSVに出力する


コントローラー名/index/hoge.csv

というようにアクション名の後ろにファイル名をつけてブラウザでアクセスすると
データがCSV形式で出力されますので、ファイルに保存後エディタ等で開くとデータを見ることができます。

なお、この出力したファイルをExcelで表示してみるとわかるのですが、
なんと日本語が文字化けします。これはto_csvの出力がUTF8になっているためで、Excelはsjisでないと日本語が文字化けしてしまいます。

原因は出力時の文字コードですので、kconvなどを利用して、CSVデータを出力している部分に tosjis をしてあげればいいでしょう。



この to_csvというplugin は簡単に導入できてコードも数行で済みますので、ruby on rails から CSV形式でデータ出力 を簡単にしたい場合には試してみてはいかがでしょうか?

Ary Djmal / to_csv plugin: Better Excel Compatibility
  http://arydjmal.com/2008/6/11/to_csv-plugin-better-excel-compatibility

arydjmal’s to_csv at master - GitHub
  http://github.com/arydjmal/to_csv

 

ブックマークに追加する

.
web開発ならKBMJ
Rubyでのwebシステム開発は
実績豊富なKBMJにお任せ下さい
iPhone開発
iPhone開発は
KBMJにお任せ下さい
ファイル共有サービス DUB
クラウドファイル共有サービス「DUB」
オープンソースECパッケージ エレコマ
オープンソースECパッケージ
「エレコマ」

プロフィール

nakahira
nakahira
kbmjでrailsエンジニアをしている。中平です。

ruby on railsのこと:
ruby on rails でのシステム開発は2006年12月ぐらいからおこなっております。
ruby on rails を知ってからは他の言語をやりたくないぐらい、ハマってます。

開発環境:
あえてWindows vistaで開発をしています。(人柱w)
aptanaというIDEを使っています。自分の周りではvimを使う人が多いですが・・・・
vimが軽くて使いやすいのは知ってますけど、自分が好きな物を使えばいいとおもうのと、vimのことはいろんな人に聞けるけど、aptanaの使い方わからないという人の為にあえて人柱w

私のこと:
攻殻機動隊が大好きです。タチコマ大好き!!
人工無能に興味あり、社内ircとsnsに人工無能ボットを仕込んで遊んでいます。
無能のコアは、rubyで作られたシシャモを利用しているので、いつかは自分の人工無能エンジンを創ってみたいですね。

最近チェックした記事

最新記事

アーカイブ

アクセスランキング

KBMJのWebソリューション
Ruby on railsの開発ならKBMJ
株式会社ケイビーエムジェイ