Thinkphp5/tp5框架excel导出
今天分享下后台常见功能之一键导出、生成excel表格问题,使用PHPExcel扩展实现功能,下面具体说下是如何实现的。
不要仰望别人,自己亦是风景
一、开发环境
开发环境:本地环境(win、wamp)
开框架:thinkphp5.0版本
二、准备工作
1、本地开发环境
2、一个适合自己的编辑器
3、composer
4、数据文件
三、实现
1、使用composer安装thinkphp5框架、phpexcel扩展
在目录中执行如下命令:
tp框架安装:composer create-project topthink/think=5.0.* tp5 --prefer-dist
phpexcel扩展安装:composer require phpoffice/phpexcel
2、代码实现
//批量导出数据 public function demo(){ $ResultInfo = db('User')->field('id,phone,addtime,nick,photo,push,email,wx,qq')->select(); // 清空(擦除)缓冲区并关闭输出缓冲 ob_end_clean(); //创建对象 $excel = new \PHPExcel(); $excel->getActiveSheet()->setTitle('投诉列表'); // 设置单元格高度 // 所有单元格默认高度 $excel->getActiveSheet()->getDefaultRowDimension()->setRowHeight(25); // 第一行的默认高度 $excel->getActiveSheet()->getRowDimension('1')->setRowHeight(30); // 垂直居中 $excel->getActiveSheet()->getDefaultStyle()->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER); // 设置水平居中 $excel->getActiveSheet()->getDefaultStyle()->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER); //Excel表格式 $letter = array('A','B','C','D','E','F','F','G','H',); //设置表头 $tableheader = array('序号','手机号','插入时间','姓名','头像','发帖权限','邮箱','微信','QQ'); //设置表头表格宽度 $tablestyle = array( array('width'=>'5'), //序号 array('width'=>'15'), //手机号 array('width'=>'15'), //插入时间 array('width'=>'15'), //姓名 array('width'=>'50'), //头像 array('width'=>'10'), //发帖权限 array('width'=>'20'), //邮箱 array('width'=>'20'), //微信 array('width'=>'10'), //QQ ); //填充表头信息 for($i = 0;$i < count($tableheader);$i++) { $excel->getActiveSheet()->setCellValue("$letter[$i]1","$tableheader[$i]"); $excel->getActiveSheet()->getColumnDimension($letter[$i])->setWidth($tablestyle[$i]['width']); } //填充表格信息 for ($i = 2;$i <= count($ResultInfo) + 1;$i++) { $j = 0; foreach ($ResultInfo[$i - 2] as $key=>$value) { $excel->getActiveSheet()->setCellValue("$letter[$j]$i","$value"); $j++; } } $filename = "./".date('Y-m-d',time())."-".rand(1111,9999).".xls"; //直接下载的代码 $write = new \PHPExcel_Writer_Excel5($excel); //$write->save($filename); header("Pragma: public"); header("Expires: 0"); header("Expires: 0"); header("Cache-Control:must-revalidate, post-check=0, pre-check=0"); header("Content-Type:application/force-download"); header("Content-Type:application/vnd.ms-execl;charset=utf-8"); header("Content-Type:application/octet-stream"); header("Content-Type:application/download"); header('Content-Disposition:attachment;filename='.$filename); header("Content-Transfer-Encoding:binary"); $write->save('php://output'); }
注意此控制器内需要引入扩展!!!!
引入方式:
use think\PHPExcel;
四、注意事项
在使用时要注意:表格式、表头、表格宽度要一一对应,避免生成异样的数据表格。