Spreadsheet_Excel_Writer
Spreadsheet_Excel_Writerを使うと、PHPからExcelのファイルを出力できます。
開発中のウェブアプリで、CSV形式のデータをダウンロードできる機能は既にあるのだけれど、実際にはExcelで欲しいとの要望が多いので、導入検討してみる。
使う
話を分かりやすくするために、下のようなクラスを作成しました。
(ざっと書いたので、へぼへぼかも。ここ、こうしたらええで、とかあったら、ご教示願いたい。)
require_once 'Spreadsheet/Excel/Writer.php'; class excel { var $wb; var $sheet = array(); function excel($name = NULL) { $this->wb = new Spreadsheet_Excel_Writer(); $this->format =& $this->wb->addFormat(); $this->format->setFontFamily('MS ゴシック'); $this->format->setSize(10); if ($name) { $this->set_name($name); } } function set_name($name) { if (!ereg(".xls$", $name)) { $name .= '.xls'; } $this->wb->send($name); } function add_sheet($key, $value = NULL) { if ($value == NULL) { $value = $key; } $this->sheet{$key} =& $this->wb->addWorksheet($value); } function set_data($s_key, $data) { $cnt = 0; foreach ($data as $row) { if ($cnt == 0) { $cnt_2 = 0; while(list($key, $val) = each($row)) { $this->sheet{$s_key}->writeString($cnt, $cnt_2, $key, $this->format); $cnt_2++; } $cnt++; } reset($row); $cnt_2 = 0; while(list($key, $val) = each($row)) { $this->sheet{$s_key}->writeString($cnt, $cnt_2, $val, $this->format); $cnt_2++; } $cnt++; } } function create() { $this->wb->close(); } }
要は、
$excel = new excel('test'); $excel->add_sheet('sheet1'); $excel->set_data('sheet1', $data); $excel->create();
こんな感じで分かりやすくするため。
中途半端な公開ですみません。
こういう感じの日記を書いてみたかったのです。
あ、それと、PHPのバージョンは4でやってます。
参考:
http://www.doyouphp.jp/sample/sample_ora_excel_pear.shtml