thinkPHP5 使用PHPExcel导出Excel文件
首先要下载一个PHPExcel 使用composer
前端代码:
<form action="ADMIN_MAIN/Excel/out" enctype="multipart/form-data" method="post"> <input type="submit" value="导出"> </form>
然后引入vendor里面的PHPExcel类:
vendor("PHPExcel.PHPExcel.PHPExcel"); vendor("PHPExcel.PHPExcel.Writer.Excel5"); vendor("PHPExcel.PHPExcel.Writer.Excel2007"); vendor("PHPExcel.PHPExcel.IOFactory");
实例化完了之后就先把数据库里面的数据查出来:
$sql = db('sys_user')->select();
有了数据,就可以设置Excel表的表头信息了:
/*--------------设置表头信息------------------*/ $objPHPExcel->setActiveSheetIndex(0) ->setCellValue('A1', 'ID编号') ->setCellValue('B1', '用户名') ->setCellValue('C1', '手机号');
这里的A1,B1是A列第一行。以此类推,就是表头了,想要哪些信息就写什么,只要数据库有,接下来可以对的上就行。
接下来就是查到的信息,对号入座到表格中:
/*--------------开始从数据库提取信息插入Excel表中------------------*/ $i=2; //定义一个i变量,目的是在循环输出数据是控制行数 $count = count($sql); //计算有多少条数据 for ($i = 2; $i <= $count+1; $i++) { $objPHPExcel->getActiveSheet()->setCellValue('A' . $i, $sql[$i-2][uid]); $objPHPExcel->getActiveSheet()->setCellValue('B' . $i, $sql[$i-2][user_name]); $objPHPExcel->getActiveSheet()->setCellValue('C' . $i, $sql[$i-2][user_tel]);
$i = 2,因为第一行是表头,所以写到表格时候只能从第二行开始写。
然后for循环。不知道的,我也无能为力。
接下来就是设置导入表的名称等内容了
/*--------------下面是设置其他信息------------------*/ $objPHPExcel->getActiveSheet()->setTitle('user'); //设置sheet的名称 $objPHPExcel->setActiveSheetIndex(0); //设置sheet的起始位置 $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); //Excel2003通过PHPExcel_IOFactory的写函数将上面数据写出来 $PHPWriter = \PHPExcel_IOFactory::createWriter( $objPHPExcel,"Excel2007"); //Excel2007 header('Content-Disposition: attachment;filename="用户信息.xlsx"'); header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); $PHPWriter->save("php://output"); //表示在$path路径下面生成demo.xlsx文件