こんにちは、KBMJの中平@railsエンジニアです。
今回はruby on railsでデータをExcelファイルに出力する 方法ついて書きます。
よく、Webシステムでデータをファイルに出力する際にはCSV形式で出してしまう事が多いと思いますが、
CSV データをExcelで開くと、「001234」というデータの頭ゼロが消されてしまい「1234」と数値として表示されてしまう事があるため、 CSVではなくExcel形式で出力したい時はないでしょうか?
また、rubyでデータをExcelに出力するプラグイン はいくつか存在しますが、
Excelがはいっていないとだめだったり、windowsでしかつかえなかったり、記述がExcelのシートや セルを意識しないとダメだったりと、めんどくさいものが多く、
ruby on railsで簡単に出力できるプラグインはあまりないのではないかと思います。
そこで、今回はruby on railsで簡単にデータをExcelファイルとして出力することができる、to_xlsというpluginの使い方について書こうと思い ます。
*csv出力の方法はこちら→http://doruby.kbmj.com/nakahira_on_rails/20100318/ruby_on_rails_CSV__to_csv_Plugin_
nullだったらfalse null以外はtrueを表示している
コントローラー名/index/hoge.xls
というようにアクション名の後ろにファイル名をつけてブラウザでアクセスすると
データがExcel形式で出力されますので、ファイルに保存後Excelで開くとデータを見ることができます。(ファイル拡張子が違うという警告が出ますが気にしない)
なお、この出力したファイルをテキストエディタで表示してみるとわかるのですが、
実はデータはXML形式になっています。これはExcelの「XMLスプレッドシート」という形式になっており、ExcelファイルをXMLで記述した形になっています。
実際にExcelから適当にファイルを作ってファイル保存する時の形式を「XMLスプレッドシート」にして保存すると同じ形式になっていることがわかると思います。
* XMLスプレッドシートはExcel2003以上で使えると思います。
また、この to_xlsは、このままではセルや文字に色をつけることができませんが、Excelから「XMLスプレッドシート」形式でファイルを作成して、XMLの記述方法を参考にすることで
色の付け方などの方法をみてto_xlsプラグインをカスタマイズすることで色をつけたり文字フォントを変えることができそうです。
このto_xlsというpluginは簡単に導入できてコードも数行で済みますので、ruby on rails からCSVではなくExcel形式でデータ出力したい場合には試してみてはいかがでしょうか?
Ary Djmal / to_xls Plugin: Export to Excel in Rails the Easy Way
http://arydjmal.com/2009/1/11/to_xls-plugin-export-to-excel-in-rails-the-easy-way
arydjmal’s to_xls at master - GitHub
http://github.com/arydjmal/to_xls