Spreadsheet_Excel_WriterがExcel2007以降でエラーになる

PHPからExcelシートを生成できるモジュールとしてというものがあります.
PHPExcelというモジュールの方が有名でかつ,現在もメンテ下にあるようですが,Spreadsheet_Excel_Writerの方は2012年くらいで更新が止まってしまっているようです.

そのせいか,Pearなどでインストールし,Excelシートを作成し,Excel2007以降のバージョンで開こうとすると,「このファイルは破損云々」というエラーが出現し,うまく開くことができません.
Excel2003で開くと問題なく開けるんですけどね.

どうしたもんかと思って色々調べていたところ,依存モジュールのOLEのバグによるものということがわかりました(詳細はこちら).
OLEがインストールされているディレクトリの中にRoot.phpというファイル(私の環境では/usr/share/pear/OLE/PPS/以下)があるので,それを開いて,その623行目

fwrite($FILE, pack("V", 1));

とある部分を

fwrite($FILE, pack("V", $num_sb_blocks));

と書き換えました.

これでExcel2003でも2007でも2010でも2013でも開くことが確認できました.
めでたし.

ただ,どこかのタイミングでPHPExcelに移行しないとなあ,と思ってはいます.


カテゴリー: 技術的なこと パーマリンク