PHPExcel不使用xls文件

时间:2014-03-19 12:02:52

标签: php phpexcel

我正在使用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); 


                }  

            }

2 个答案:

答案 0 :(得分:1)

您正在加载的文件被标识为CSV文件,即使它具有.xls扩展名......对于某些开发人员而言,保存格式为csv的文件是一种常见做法或者使用扩展名为.xls的html标记,但这不会使它们成为BIFF格式的.xls文件。

CSV阅读器无法使用setReadDataOnly()方法,因为CSV文件不能包含除数据以外的任何内容。

最新版本的PHPExcel在CSV阅读器中为setReadDataOnly()提供了一个存根,以防止在这种情况下出现错误,我当然建议您升级到最新的代码;但如果你不能这样做,那么最简单的解决方法就是在setReadDataOnly()测试中将调用包装到if

$inputFileType = PHPExcel_IOFactory::identify( $file_path);

$objReader = PHPExcel_IOFactory::createReader($inputFileType);  
if ($inputFileType !== 'CSV') {
    $objReader->setReadDataOnly(true);
}

答案 1 :(得分:0)

对于二进制Excel文件(xls),使用(旧)PHP-ExcelReader可能会有更好的运气。这是迄今为止我发现的最可靠的。