PHPExcel表格导出
2022-03-05PHP
在很多场景中,我们都要用到excel里的数据,怎样能快速的操作导出excel中的数据呢?
前期准备工作可以看看PHPExcel导入的准备,另外导出需要准备一个数据列表页面,一张学生信息表。
二、具体操作流程及实现思路
实现思路:
1.首先将数据库里面的学生信息取出来,展示在界面。我们将新建一个student方法,来展示学生信息。
2.通过点击 导出Excel按钮 请求导出处理函数export。
3.export收到请求后,将取出来的数据循填入到excel表格中。
4.数据填完了,生成excel表格输出在浏览器下载。
三、案例展示
前台代码
<div class="container"> <table class="table table-bordered" width="60%"> <thead> <tr> <th width="30">ID</th> <th width="50">姓名</th> <th width="30">年龄</th> <th width="30">班级</th> <th width="30">电话</th> <th width="30">邮箱</th> </tr> </thead> <tbody> {volist name="list" id="v"} <tr> <td>{$v['id']}</td> <td>{$v['name']}</td> <td>{$v['age']}</td> <td>{$v['class']}</td> <td>{$v['tel']}</td> <td>{$v['email']}</td> </tr> {/volist} </tbody> </table> <button type="button" onclick="window.open('{:url('export')}')">导出Excel</button> </div>
后台代码
//表格导出处理 public function export(){ //1.从数据库中取出数据 $arr = Db::name('student')->select(); //判断是否为空 if(empty($arr)){ return $this->error('表格为空!请添加数据',"/admin/tel/index"); } //转换时间 $list=[]; foreach($arr as $k=>$v){ $v['create_time']=date("Y-m-d H:i",$v['create_time']); $list[]=$v; } //2.加载PHPExcle类库 vendor('PHPExcel.PHPExcel'); //3.实例化PHPExcel类 $objPHPExcel = new \PHPExcel(); //4.激活当前的sheet表 $objPHPExcel->setActiveSheetIndex(0); //5.设置表格头(即excel表格的第一行) $objPHPExcel->setActiveSheetIndex(0) ->setCellValue('A1', 'ID') ->setCellValue('B1', '姓名') ->setCellValue('C1', '年龄') ->setCellValue('D1', '班级') ->setCellValue('E1', '电话') ->setCellValue('F1', '邮箱'); //设置F列水平居中 $objPHPExcel->setActiveSheetIndex(0)->getStyle('F')->getAlignment() ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER); //设置单元格宽度 $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('E')->setWidth(15); $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('F')->setWidth(30); //6.循环刚取出来的数组,将数据逐一添加到excel表格。 for($i=0;$i<count($list);$i++){ $objPHPExcel->getActiveSheet()->setCellValue('A'.($i+2),$list[$i]['id']);//添加ID $objPHPExcel->getActiveSheet()->setCellValue('B'.($i+2),$list[$i]['name']);//添加姓名 $objPHPExcel->getActiveSheet()->setCellValue('C'.($i+2),$list[$i]['age']);//添加年龄 $objPHPExcel->getActiveSheet()->setCellValue('D'.($i+2),$list[$i]['class']);//添加班级 $objPHPExcel->getActiveSheet()->setCellValue('E'.($i+2),$list[$i]['tel']);//添加电话 $objPHPExcel->getActiveSheet()->setCellValue('F'.($i+2),$list[$i]['email']);//添加邮箱 } //7.设置保存的Excel表格名称 $filename = '学生信息'.date('ymd',time()).'.xls'; //8.设置当前激活的sheet表格名称; $objPHPExcel->getActiveSheet()->setTitle('学生信息'); //9.设置浏览器窗口下载表格 header("Content-Type: application/force-download"); header("Content-Type: application/octet-stream"); header("Content-Type: application/download"); header('Content-Disposition:inline;filename="'.$filename.'"'); //生成excel文件 $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); //下载文件在浏览器窗口 $objWriter->save('php://output'); exit; }
很赞哦! ()