分かりやすく、使いやすく。

対応方法:The filename test.xlsx is not recognised as an OLE file(PHPExcel_Reader_Exception)

スポンサーリンク

PHPExcel では、'Excel5' を引数として生成したファイルリーダーで、 Excel 2007 以降のファイル形式(*.xlsx)を読み込もうとすると、PHPExcel_Reader_Exception が発生します。

この例外が発生するサンプルコードは以下の通りです。

php(実行可能なサンプルコード)
1
2
3
4
5
6
//PHPExcelの読み込み
require_once("./Classes/PHPExcel.php");
 
//既存のエクセルファイルの読み込み(リーダーのバージョンとファイルのバージョンがアンマッチ)
$obj_reader = PHPExcel_IOFactory::createReader('Excel5');
$obj_book   = $obj_reader->load('test.xlsx'); 

実行すると、PHPExcel_Reader_Exception が発生し、The filename test.xlsx is not recognised as an OLE file というエラーメッセージが表示されます。

C:\php5.3\test>C:\php5.3\php test.php
PHP Fatal error:  Uncaught exception 'PHPExcel_Reader_Exception' with message 'T
he filename test.xlsx is not recognised as an OLE file' in C:\php5.3\test\Classe
s\PHPExcel\Shared\OLERead.php:89
Stack trace:
#0 C:\php5.3\test\Classes\PHPExcel\Reader\Excel5.php(1164): PHPExcel_Shared_OLER
ead->read('test.xlsx')
#1 C:\php5.3\test\Classes\PHPExcel\Reader\Excel5.php(612): PHPExcel_Reader_Excel
5->_loadOLE('test.xlsx')
#2 C:\php5.3\test\test.php(9): PHPExcel_Reader_Excel5->load('test.xlsx')
#3 {main}
  thrown in C:\php5.3\test\Classes\PHPExcel\Shared\OLERead.php on line 89
 
Fatal error: Uncaught exception 'PHPExcel_Reader_Exception' with message 'The fi
lename test.xlsx is not recognised as an OLE file' in C:\php5.3\test\Classes\PHP
Excel\Shared\OLERead.php:89
Stack trace:
#0 C:\php5.3\test\Classes\PHPExcel\Reader\Excel5.php(1164): PHPExcel_Shared_OLER
ead->read('test.xlsx')
#1 C:\php5.3\test\Classes\PHPExcel\Reader\Excel5.php(612): PHPExcel_Reader_Excel
5->_loadOLE('test.xlsx')
#2 C:\php5.3\test\test.php(9): PHPExcel_Reader_Excel5->load('test.xlsx')
#3 {main}
  thrown in C:\php5.3\test\Classes\PHPExcel\Shared\OLERead.php on line 89 

対応方法

リーダーを生成する際に 2007 以降のファイル形式(*.xlsx)に対応する引数 'Excel2007' を指定します。

php(実行可能なサンプルコード)
1
2
3
4
5
6
//PHPExcelの読み込み
require_once("./Classes/PHPExcel.php");
 
//既存のエクセルファイルの読み込み
$obj_reader = PHPExcel_IOFactory::createReader('Excel2007');
$obj_book   = $obj_reader->load('test.xlsx'); 

このように修正することで問題なくエクセルファイルが読み込めるようになります。

スポンサーリンク