thinkphp导出excel数据

  1. 由于PHPExcel早就停止更新维护,建议使用phpspreadsheet,本文就教你如何用PhpSpreadsheet导出excel
    注:原生导出excel可以看我另一篇文章https://blog.csdn.net/qq_36303853/article/details/100283687

  2. 环境要求:

     PHP >= 5.6
     开启php_zip扩展
     开启php_xml扩展
     开启php_gd2扩展
    
  3. 使用composer安装,依次输入下面2条指令

     composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
     composer require phpoffice/phpspreadsheet -vvv
    
  4. 安装成功
    thinkphp导出excel数据_第1张图片

使用

  1. 先引入命名空间

     use PhpOffice\PhpSpreadsheet\Spreadsheet;
     use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
    
  2. 封装方法

     /**
          * 导出excel表
          * $data:要导出excel表的数据,接受一个二维数组
          * $name:excel表的表名
          * $head:excel表的表头,一维数组
          * $key:$data中对应表头的键的数组,一维数组
          * 备注:表头(对应列数)不能超过26;
          */
         public function excel($name='表'名, $data=[], $head=[], $keys=[])
         {
             $count = count($head);  //计算表头数量
             $spreadsheet = new Spreadsheet();
             $sheet = $spreadsheet->getActiveSheet();
     
             for ($i = 65; $i < $count + 65; $i++) {     //数字转字母从65开始,循环设置表头:
                 $sheet->setCellValue(strtoupper(chr($i)) . '1', $head[$i - 65]);
             }
             foreach ($data as $key => $item) {             //循环设置单元格:
                 //$key+2,因为第一行是表头,所以写到表格时   从第二行开始写
     
                 for ($i = 65; $i < $count + 65; $i++) {     //数字转字母从65开始:
                     $sheet->setCellValue(strtoupper(chr($i)) . ($key + 2), $item[$keys[$i - 65]]);
                     $spreadsheet->getActiveSheet()->getColumnDimension(strtoupper(chr($i)))->setWidth(20); //固定列宽
                 }
             }
             header('Content-Type: application/vnd.ms-excel');
             header('Content-Disposition: attachment;filename="' . $name . '.xlsx"');
             header('Cache-Control: max-age=0');
             $writer = new Xlsx($spreadsheet);
             $writer->save('php://output');
             //删除清空:
             $spreadsheet->disconnectWorksheets();
             unset($spreadsheet);
             exit;
         }
    
  3. 简单的使用

     //数据
     $data = Db::name('user')->select()->toArray();
     //设置表头:
     $head = ['ID','项目名称', '姓名'];
     //数据中对应的字段,用于读取相应数据:
     $keys = ['id','project_name', 'user_nickname'];            
     $this->excel('报名信息表', $data, $head, $keys);
    

y

如果你也学php可以点个关注,我会不定期更新文章,给个赞,支持一下,过程有遇到什么问题也欢迎评论私信,进行交流

你可能感兴趣的:(php学习笔记,excel,thinkphp)