簡體   English   中英

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); 


                }  

            }

即使您正在加載的文件具有.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM