いろいろな集計結果などをExcelで出力したいという要求、結構ありますよね。
CSV出力であれば、下記のようにすれば簡単ですよね。
/* HTTPヘッダの出力 */
Header(“Content-disposition: attachment; filename=$filename”);
Header(“Content-type: application/octet-stream; name=test.csv”);
$str = mb_convert_encoding($data,”SJIS”,mb_detect_encoding($data,”auto”));
$content .= “\””.$str.”\”,”;
echo $content.”\n”;
ですが、Excelとなると。。。
そんな時はやっぱりPEARに頼るのが得策です。
Spreadsheet/Excel/Writer/Writer.php
これもかなり便利ですが、やっぱり問題があります。
それはExcelのバージョンです。
Excel95,97あたりのバージョンしか対応していないのです。問題ないと思いますか?いや、あるんです。1セル辺りの文字数が256文字までしか対応していない場合があります。それ以上あるとカットされてしまうのです。
それも回避する方法があります。
$workbook = new Spreadsheet_Excel_Writer();
//$workbook->setVersion(0x0500);
$workbook->setVersion(8);
上記のsetVersionがそれです。
setVersion(8)はよくウェブに載っているのですが、それではうまくいかないことがあり、ソースファイルを調べたら。。0x0500ってのがあるんですね。。。
Spreadsheet_Excel_WriterでExcel出力時に不具合がでたら、setVersionを試してみてください。
–2007/05/11追記–
PHPExcelでも最近いいかなと思っております。こちらもチェックしてみてください。