[英]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);
}
}
即使您正在加載的文件具有.xls
擴展名,也可以將其識別為CSV
文件...對於某些開發人員來說,保存csv格式或帶有.xls擴展名的html標記格式的文件是一種很常見的做法,但這並不能使它們成為BIFF格式的.xls文件。
setReadDataOnly()
方法不適用於CSV閱讀器,因為CSV文件中不能包含任何數據。
PHPExcel的最新版本在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可能會更好。 這是我到目前為止找到的最可靠的一個。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.