author @小凯 [TOC] ## 一、前期准备工作 > 前期准备工作可以看看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.从数据库中取出数据 $list = Db::name('student')->select(); //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; } ~~~ * * * * * ## 四、代码下载地址及更新日期 >说明:每次demo的数据库文件将放在db目录下,需要的导入数据库即可。 **代码地址[https://github.com/liuzhen153/thinkphp5-demo](https://github.com/liuzhen153/thinkphp5-demo) 的 [PHPExcel-demo2](https://github.com/liuzhen153/thinkphp5-demo/tree/master/PHPExcel-demo2)** > 本次更新:2017/2/18 晚