PHPExcel ライブラリを使用して PHP Web アプリケーションを開発しました。奇妙にExcelドキュメントとして認識できない一部のExcelドキュメントを除いて、すべてが正常に機能しています。これらのファイルを Microsoft Excel で開き、xls、csv、xlsx として保存すると、すべて正常に動作します。だから...一部のExcelファイルは、拡張子が正確に表示されていないと思います。おそらくそれらは XML を偽装しているのでしょうか? PHPExcel で XML サポートを取得することは可能ですか?
エラーは次のとおりです。
Fatal error: Uncaught exception 'PHPExcel_Reader_Exception' with message 'The filename /tmp/phphrnIR2 is not recognised as an OLE file' in /home/www/text/excel/reader/Classes/PHPExcel/Shared/OLERead.php:89 Stack trace: #0 /home/test/excel/reader/Classes/PHPExcel/Reader/Excel5.php(1164): PHPExcel_Shared_OLERead->read('/tmp/phphrnIR2') #1 /home/www/text/excel/reader/Classes/PHPExcel/Reader/Excel5.php(612): PHPExcel_Reader_Excel5->_loadOLE('/tmp/phphrnIR2') #2 /home/www/test/excel/actions.php(60): PHPExcel_Reader_Excel5->load('/tmp/phphrnIR2') #3 /home/www/test/excel/index.php(77): include_once('/home/www/test/ex...') #4 {main} thrown in /home/www/test/excel/reader/Classes/PHPExcel/Shared/OLERead.php on line 89
ファイル認識用のphpコード:
$name = $_FILES['file']['name'];
$tname = $_FILES['file']['tmp_name'];
$type = $_FILES['file']['type'];
if($type == 'application/vnd.ms-excel')
{
// Excel 97 extension
$ext = 'xls';
}
else if($type == 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet')
{
// Excel 2007 and 2010 extension
$ext = 'xlsx';
}
else if($type == 'text/csv')
{
// Excel CSV extension
$ext = 'csv';
}else{
// Invalid Extension
?>
<script languaje="javascript">
swal("Bad file...", "A valid extension must be XLS, XLSX o CSV!", "error");
</script>
<?php
exit();
}
//reader creation
$objReader = PHPExcel_IOFactory::createReader($$ext);
//uploading file
$objPHPExcel = $objReader->load($tname);
$dim = $objPHPExcel->getActiveSheet()->calculateWorksheetDimension();