2012年4月25日水曜日

[PHP][Excel][PHPExcel] 作成したExcelをダウンロードする

PHPExcelで作成したExcelをダウンロードしたい時がある。
一旦適当なフォルダにExcelを作ってそれをダウンロードさせてもいいが、
フォルダにパーミッションを設定したりダウンロードし終わったExcelを削除したりと、
余計な手間が多い。

そういう時は直接Excelをダウンロードさせるといい。

//ClassesをおいたパスからPHPExcel.phpをインクルードする
require_once('Classes/PHPExcel.php');
//Excelのクラスを作る
$excel=new PHPExcel();
//アクティブなシートを取得する
$sheet=$excel->getActiveSheet();
//シートに名前をつける
$sheet->setTitle('test');
//A1参照で値を入れる
$sheet->setCellValue('A1','test');

//ヘッダを設定する
header('Content-Type: application/octet-stream');
//ダウンロードするときのファイル名を指定する
//.xlsx形式でDLするときは拡張子をxlsxに変えておく
header('Content-Disposition: attachment;filename="test.xls"');
//.xls形式で書き込むためのクラスを作る
//.xlsx形式を書き込む場合は'Excel5'の部分を'Excel2007'に変える →$writer=PHPExcel_IOFactory::createWriter($excel,'Excel2007');
$writer=PHPExcel_IOFactory::createWriter($excel,'Excel5');
//出力バッファへの書き込む
$writer->save('php://output');
exit;

こうすることによって、
一旦ファイルを作ったりすることなくダウンロードさせることが出来る。
なお
header('Content-Type: application/octet-stream')
の代わりに
header('Content-Type: application/vnd.ms-excel')
を指定することもあるが、ブラウザやバージョン、設定によって挙動が異なってしまうため、
あまりお勧めはしない。
ただ、あえてブラウザでExcelを開けるときは開きたいという場合は指定することもある。

0 件のコメント:

コメントを投稿