PHPExcelの文字化け対応 [2008/09/15]

PHPでExcelを扱えるものはいくつかある。
・ExcelReviser
⇒ テンプレートを作成しておき、そこに値を入れていく。

・PHPExcel(BIFF12対応)
⇒ テンプレート不要で、無からExcelファイルを生成できる。

もちろん用途に応じて使い分ければいいと思う。

ただしPHPExcelの場合、シート名の日本語部分が文字化けしてしまった。
どっかの文字コード変換をいじれば直るだろうと思っていたが、予想以上に時間かかった。
シート名の文字コードはUTF-16LEらしい。

いじったのは1つのファイル。
Workbook.php
■addWorksheet メソッド
以下の文字コード変換を追加
$name = mb_convert_encoding($name, 'UTF-16LE', 'UTF-8');

■_storeBoundsheet メソッド
$cch の算出部分を以下に変更
$cch = mb_strlen($sheetname, "UTF-16LE") + 0x0100;

これで無事に setTitleメソッドにて、日本語シート名を設定できた!