我使用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文件不能包含除数据以外的任何内容。
setReadDataOnly()
的存根,以防止在这种情况下出现错误,我当然建议你升级到最新的代码;但是如果你不能这样做,那么对你来说最简单的修复就是简单地将对setReadDataOnly()
的调用包装在if
测试中:
$inputFileType = PHPExcel_IOFactory::identify( $file_path);
$objReader = PHPExcel_IOFactory::createReader($inputFileType);
if ($inputFileType !== 'CSV') {
$objReader->setReadDataOnly(true);
}
对于二进制Excel文件(xls),使用(旧的)PHP-ExcelReader可能会有更好的运气。