PEAR の SpreadSheet_Excel_Write で作成した XLS ファイルが Excel2007 で開けないという事態になりました。環境は以下の通りです。
apache 2.3.3
PHP 5.1.6
Spreadsheet_Excel_Writer 0.9.3
OLE 1.0.0RC2
以下のような状況になりました。
WindowsXP 上の Excel2007 では問題なく開ける。
Windows7 上の Excel2007 ではエラーメッセージが表示され、表示されたシートに書式が反映されていない。
ただし、エラーになるのはデータを13件以上出力したシートのみ。12件以下のデータを出力したシートではWindows7 + Excel2007 の環境でもエラーにならない。
最初に表示されるメッセージは「ファイル.xls には読み取れない内容が含まれています。このブックの内容を回復しますか? ブックの発行元が信頼できる場合は、[はい] をクリックしてください。」
errormessage.png
「はい」をクリックして表示されるメッセージは「読み取れなかった内容を修復または削除することにより、ファイルを開くことができました。」「数式とセルの値が回復されましたが、一部のデータが消失した可能性があります。」
errordetail.png
解決方法
PEAR の OLE 1.0.0RC2 をアンインストールし、OLE 1.0.0RC1 をインストールする。
以下は蛇足。
状況から下記の点について疑い、調査しましたが結果的に関係ありませんでした。
・データ出力の量によってエラーになる?→関係なし
・WinXP と Win7 で XLS ファイルをダウンロードしたブラウザの挙動が違う?→関係なし
「spreadsheet_excel_writer corrupted」でググったところ、OLE の RC1 と RC2 で違いが出るような情報が見つかったので試してみたら、それがビンゴでした。

カテゴリー: 開発関係

1件のコメント

ボケ猫 · 2012年7月31日 09:48

どうも初めまして。
私も同じ現象でハマってましたので助かりました。
数件出力するぶんには問題が起こらないというのが質悪い!まさかOLEで解消するとは、、、
ありがとうございました。

ボケ猫 へ返信する コメントをキャンセル

アバタープレースホルダー

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください