vendor 引入 PHPExcel
下载:https://wwt.lanzoub.com/iu65L03o5b8h 密码:8zfx
第一种方法导出:
public function getEx(){
$id = $_GET['id'];
//1.查询数据库导出数据
$list = D('policy_consult')->field(['id','title','content','name','phone','sex','addtime'])->where(['policy_id'=>$id])->select();
//数据修改 可忽略
foreach($list as $k=>&$v){
$v['sex'] = $v['sex'] ? '女':'男';
$v['addtime'] = date('Y-m-d h:i:s',$v['addtime']);
}
if(empty($list)){
$this->error("未查询到导出数据",'');
}
//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', '性别')
->setCellValue('G1', '添加时间');
//设置A列水平居中
$objPHPExcel->setActiveSheetIndex(0)->getStyle('A1')->getAlignment()
->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
//设置单元格宽度
//6.循环刚取出来的数组,将数据逐一添加到excel表格。
$objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('B')->setWidth(20);
$objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('C')->setWidth(30);
$objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('D')->setWidth(50);
$objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('E')->setWidth(20);
$objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('G')->setWidth(30);
ob_end_clean(); //!!!!!!!清除缓冲区,避免乱码
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]['title']);//标签码
$objPHPExcel->getActiveSheet()->setCellValue('C'.($i+2),$list[$i]['content']);//防伪码
$objPHPExcel->getActiveSheet()->setCellValue('D'.($i+2),$list[$i]['name']);//ID
$objPHPExcel->getActiveSheet()->setCellValue('E'.($i+2),$list[$i]['phone']);//标签码
$objPHPExcel->getActiveSheet()->setCellValue('F'.($i+2),$list[$i]['sex']);//ID
$objPHPExcel->getActiveSheet()->setCellValue('G'.($i+2),$list[$i]['addtime']);//标签码
}
//7.设置保存的Excel表格名称
$filename = $club_name.'咨询名单'.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;
}
错误:
1.'break' not in the 'loop' or 'switch' context 报错
'break' not in the 'loop' or 'switch' context
错误位置
FILE: /private/var/www/backend/ThinkPHP/Library/Org/Util/PHPExcel/Calculation/Functions.php LINE: 576
直接删除576行的 'break'即可!
原文链接:https://blog.youkuaiyun.com/neizhiwang/article/details/102994824
2.数据乱码
ob_end_clean(); //!!!!!!!清除缓冲区,避免乱码
第二种方法:
第二种属于输出的excel 样式不是很好看 但是简单不需要 PHPExcel
直接把 文件夹下的 Export.php 调用即可
public function getEx(){
vendor("phpexcel.Export");
$Export = new \Export();
$id = $_GET['id'];
$list = []; //导出数据
if(empty($list)){
$this->error("未查询到导出数据",'');
}
$Export->getExcel($list);
}