去评论
dz插件网

PHPExcel使用1-读取excel并显示出来-比较老的方法

xiao9469
2023/04/21 18:22:47
使用第三方扩展PHPExcel读取excel并显示出数据,

代码如下:(Thinkphp5示例)
  1. //导入excel中的积分
  2. public function import_excel()
  3. {
  4.     Loader::import('PHPExcel.Classes.PHPExcel');      //手动引入PHPExcel.php
  5.     Loader::import('PHPExcel.Classes.PHPExcel.IOFactory');    //引入IOFactory.php 文件里面的PHPExcel_IOFactory这个类
  6.     $inputFileName = 'e:/23333.xls';
  7.     date_default_timezone_set('PRC');
  8.     // 读取excel文件
  9.     try {
  10.         $inputFileType = \PHPExcel_IOFactory::identify($inputFileName);
  11.         $objReader = \PHPExcel_IOFactory::createReader($inputFileType);
  12.         $objPHPExcel = $objReader->load($inputFileName);
  13.     } catch(Exception $e) {
  14.         exit('加载文件发生错误:['.pathinfo($inputFileName,PATHINFO_BASENAME).']'.$e->getMessage());
  15.     }
  16.     // 确定要读取的sheet
  17.     $sheet = $objPHPExcel->getSheet(0);
  18.     $highestRow = $sheet->getHighestRow();
  19.     $highestColumn = $sheet->getHighestColumn();
  20.     // 获取一行的数据
  21.     for ($row = 1; $row <= $highestRow; $row++){
  22.         // Read a row of data into an array
  23.         $rowData = $sheet->rangeToArray('A' . $row . ':' . $highestColumn . $row, NULL, TRUE, FALSE);
  24.         //这里得到的rowData都是一行的数据,得到数据后自行处理,我们这里只打出来看看效果
  25.         print_r($rowData);
  26.         echo '
  27. ';
  28.     }
  29. }

最后结果:
  1. 注:PHPExcel官方已经不再维护,新项目推荐使用PhpSpreadsheet来操作excel。

在CSDN上也发现一个使用PHPExcel:原始链接:https://blog.csdn.net/ning521513/article/details/55257925 ,原版有错误,我给修正了一下:
  1. public function abc()
  2.     {
  3.         $uploadfile = 'E:/000111.xls';
  4.         if (!file_exists($uploadfile)) {
  5.             $this->notfound();
  6.         }
  7.         $ext        = substr(strstr($uploadfile, '.'), 1);
  8.         require './extend/PHPExcel/Classes/PHPExcel.php';
  9.         //require './extend/PHPExcel/Classes/PHPExcel/IOFactory.php';
  10.         if($ext=='xlsx'||$ext=='xls' ){
  11.             $reader = \PHPExcel_IOFactory::createReader('Excel5'); // 读取 excel 文档
  12.         }else if( $ext=='csv' ){
  13.             $reader = \PHPExcel_IOFactory::createReader('CSV'); // 读取 excel 文档
  14.         }else{
  15.             die('Not supported file types!');
  16.         }
  17.         $PHPExcel = $reader->load($uploadfile); // 文档名称
  18.         $objWorksheet = $PHPExcel->getActiveSheet();
  19.         $highestRow = $objWorksheet->getHighestRow(); // 取得总行数
  20.         $highestColumn = $objWorksheet->getHighestColumn(); // 取得总列数
  21.         //echo $highestRow.$highestColumn;
  22.         // 一次读取一列
  23.         $res = array();
  24.         for ($row = 1; $row <= $highestRow; $row++) {
  25.             for ($column = 'A'; $column <= $highestColumn; $column++) {
  26.                 $ccc = ord($column) - 65;
  27.                 $val = $objWorksheet->getCellByColumnAndRow($ccc, $row)->getValue();
  28.                 $res[$row-1][$column] = $val;
  29.             }
  30.         }
  31.         dd($res);
  32.     }
算是一个发散思维读取excel内容的方法吧。还有现在TP5都支持命名空间了,居然还在用require。
建议以后都使用命名空间引入,少用require。