2011年1月5日水曜日

Railsでエクセルファイルを出力する



環境:rails2.3.8、spreadsheet0.6.5.0


今回は、Ruby用のspreadsheetというのを使って、エクセルを出力したいと思います。


イメージとしては、エクセルのテンプレートファイルを作っておき、


出力ボタン押下時に、そのテンプレートを読込み、値を設定し、そのまま「ファイルを開く」ダイアログを出す感じで。





まずは、


gem install spreadsheet


現在のバージョンは0.6.5.0でした。


次に出力機能を付けるcontrollerに以下のソースを記述する。



def print
require 'spreadsheet'

#テンプレートファイルの取得
book = Spreadsheet.open("テンプレート.xls")

#最初のワークシートを設定
sheet1 = book.worksheet(0)

#ここで値をゴリゴリ設定する
sheet1[8,5] = "125"
sheet1[9,5] = "9"

#ダウンロードする為にtempファイルを作成
tmpfile = Tempfile.new ["テスト", ".xls"]
book.write tmpfile

tmpfile.open # reopen

send_data(
tmpfile.read,
)

tmpfile.close(true)

end


あとは、view側で上記のprintアクションを呼ぶようにするだけ。





0 件のコメント:

コメントを投稿