php Call to undefined method PEAR_Error::xxx() エラーについて
<?php $workbook = new Spreadsheet_Excel_Writer(); $worksheet =& $workbook->addWorksheet(mb_convert_encoding($sheet_name, 'sjis-win', 'utf8')); $worksheet->write(0, 0, mb_convert_encoding('test', 'sjis-win', 'utf8'));
Spreadsheet_Excel_Writerで上記を実行したところ、以下のエラーが発生。
Fatal error: Call to undefined method PEAR_Error::write() in ~
これは「$workbook->addWorksheet()」を実行したときに内部でエラーが起きて、PEAR_ERRORオブジェクトが返却されたため。それで次の「$worksheet->write()」を実行したときにそんなメソッド無いよって怒られた。
例えば以下のようにすることでエラーの内容が分かる。
<?php $workbook = new Spreadsheet_Excel_Writer(); $worksheet =& $workbook->addWorksheet(mb_convert_encoding($sheet_name, 'sjis-win', 'utf8')); // 追加 if (PEAR::isError($worksheet)) { echo $worksheet->getMessage(); echo $worksheet->getDebugInfo(); exit; } $worksheet->write(0, 0, mb_convert_encoding('test', 'sjis-win', 'utf8'));
こちらを実行したところ、「Sheetname xxx must be <= 31 chars」と表示された。どうやらシート名の文字数が多かったのが原因だったらしい。