PHPExcel不支持xls文件


PHPExcel not working with xls file

我使用PHPExcel在php中读取excel文件,它与xlsx工作正常,但当尝试读取xls文件时,它显示一个错误

     Fatal error: Call to undefined method PHPExcel_Reader_CSV::setReadDataOnly() in /var/www/....

我的代码

            $file_path='/var/www/html/site/sample.xls';
            $inputFileType = PHPExcel_IOFactory::identify( $file_path);
            $objReader = PHPExcel_IOFactory::createReader($inputFileType);  
            $objReader->setReadDataOnly(true);
            /**  Load $inputFileName to a PHPExcel Object  **/  
            $objPHPExcel = $objReader->load( $file_path);
            $total_sheets=$objPHPExcel->getSheetCount(); 
            $allSheetName=$objPHPExcel->getSheetNames(); 
            $objWorksheet = $objPHPExcel->setActiveSheetIndex(0); 
            $highestRow = $objWorksheet->getHighestRow(); 
            $highestColumn = $objWorksheet->getHighestColumn();  
            $highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn);  
            for ($row = 1; $row <= $highestRow;++$row) 
            {  
                for ($col = 0; $col <$highestColumnIndex;++$col)
                {  
                    $value=$objWorksheet->getCellByColumnAndRow($col, $row)->getValue();  
                          $arraydata[$row-1][$col]=trim($value); 

                }  
            }

您正在加载的文件被识别为CSV文件,即使它具有.xls扩展名…对于一些开发人员来说,将文件保存为csv格式或带有。xls扩展名的html标记是相当常见的做法,但这并不能使它们成为biff格式的。xls文件。

setReadDataOnly()方法不可用于CSV Reader,因为CSV文件不能包含除数据以外的任何内容。

最新版本的PHPExcel在CSV Reader中提供了setReadDataOnly()的存根,以防止在这种情况下出现错误,我当然建议你升级到最新的代码;但是如果你不能这样做,那么对你来说最简单的修复就是简单地将对setReadDataOnly()的调用包装在if测试中:
$inputFileType = PHPExcel_IOFactory::identify( $file_path);
$objReader = PHPExcel_IOFactory::createReader($inputFileType);  
if ($inputFileType !== 'CSV') {
    $objReader->setReadDataOnly(true);
}

对于二进制Excel文件(xls),使用(旧的)PHP-ExcelReader可能会有更好的运气。