我正在使用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);
}
}
答案 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可能会有更好的运气。这是迄今为止我发现的最可靠的。