dak ブログ

python、rubyなどのプログラミング、MySQL、サーバーの設定などの備忘録。レゴの写真も。

rubyでexcelファイルをダウンロードさせるCGI

2011-02-22 01:01:30 | ruby
rubyのCGIでexcelファイルをダウンロードさせるようにする方法です。
Spreadsheet::Workbook#write() の引数に STDOUT を指定するとエラーになるので、Tempfile に書き出しておいて rewind してから read して出力しています。
普通のファイルに書き込むと、エラー処理などが面倒ですが、Tempfile ならファイルが残らないので便利です。


#!/usr/local/bin/ruby

KCODE = 'u'
require 'jcode'
require 'cgi'
require 'tempfile'
require 'rubygems'
require 'spreadsheet'

# シートを作成
book = Spreadsheet::Workbook.new
sheet = book.create_worksheet
sheet[0, 0] = 'テスト1'
sheet[0, 1] = 'テスト2'

# シートを出力
Tempfile.open('/tmp') do |tf|
book.write(tf)
tf.rewind

# ダウンロードファイル名
file_name = "download.xls"

print("Content-Type: application/octet-stream\n")
print("Pragma: private\n")
print("Content-Disposition: attachment; filename=\"#{file_name}\"\n")
print("\n")
print(tf.read)
end



この記事についてブログを書く
« 16進ダンプ | トップ | grepで固定文字列の検索 »

ruby」カテゴリの最新記事