Excelファイル操作 Ruby and Java

こんにちは

元業務系プログラマ村上です。

業務系システムに必要な機能の1つに「Excel出力」というものがあります。
Javaをやっていたときは「Apache POI」を使ってExcelファイルの作成をしていました。

じゃあ、Rubyにもないのか?
ってことで調べてみるとありました。

「spreadsheet」というgemがあるようです。

spreadsheetについて

ってして、もしくはGemfileに書いて「bundle install」 準備はOK

そして次のコードを実行

実行したExcelファイルは

ruby_excel

な感じです。
(横幅は見やすいように変更しています。)

RubyでもExcel出力は問題なくできそうですね。

Java Apache POI との比較

気になるのはレスポンスとメモリの消費量です。
POIの時もExcelのそれぞれのcellやスタイルをオブジェクトとして保持するため、大量データのExcel出力には向きませんでした。

なのでちょいとレスポンスを測ってみましょう。
比較対象は「Apache POI」です。

1000行のシートを100シート出力する際の処理時間は

Java (Apache POI) Ruby (spreadsheet)
0.78秒 53.32秒

Java爆速です。。。

まとめ

RubyでもExcel出力することは可能なようです。
でも、Excelのバージョンに追従したり、細かいフォーマットスタイルの調整といったコードを書くのはすごく大変です。
前は、2003形式と2007形式を選択可能にしたり、改ページの設定などに大変苦労した記憶があります。

帳票系は会議資料などに使われたりするので、見栄えというのが重要になります。
そのため、画面と同じぐらい変更要望が入ることが多いので、レイアウト部分とデータ生成部分は分けて作る必要があります。

あと、JavaとRubyで比較しましたが、1アプリケーションの中で異なる言語やフレームワークを使うということは稀だと思うので、ここでは「Java、RubyともにExcel出力ができそうだ。」というぐらいに受け取っていただければと思います。

Comments are closed, but you can leave a trackback: Trackback URL.