thinkphp5 导出数据到excel表格中及其导出乱发解决方法

前端请求方法:GET

PHPExcel类库下载链接: https://pan.baidu.com/s/1PkN5-jGhWWWvT2Vf07JiPQ 提取码: f66s

导出EXCEL乱码问题 解决方法:ob_end_clean(); //清除缓冲区,避免乱码

代码实现:

public function export(){
        //1.从数据库中取出数据
        $list = Db('withdrawal')->alias('w')
        ->join('snake_member m','m.id=w.member_id')
        ->order('w.id asc')->field('w.*,m.username,m.phone')->select();
        //2.加载PHPExcle类库
        vendor('PHPExcel.PHPExcel');
        ob_end_clean();//清除缓冲区,避免乱码
        //3.实例化PHPExcel类
        $objPHPExcel = new \PHPExcel();
        //4.激活当前的sheet表
        $objPHPExcel->setActiveSheetIndex(0);
        //5.设置表格头(即excel表格的第一行)
        $objPHPExcel->setActiveSheetIndex(0)
                ->setCellValue('A1', 'ID')
                ->setCellValue('B1', '会员ID')
                ->setCellValue('C1', '会员姓名')
                ->setCellValue('D1', '会员号码')
                ->setCellValue('E1', '提现金额(元)')
                ->setCellValue('F1', '提现时间')
                ->setCellValue('G1', '审核状态');
        //设置A列水平居中
        $objPHPExcel->setActiveSheetIndex(0)->getStyle('A')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
        $objPHPExcel->setActiveSheetIndex(0)->getStyle('B')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
        //设置单元格宽度
        $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('A')->setWidth(10);
        $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('B')->setWidth(10); 
        $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('C')->setWidth(10); 
        $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('D')->setWidth(12); 
        $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('E')->setWidth(10); 
        $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('F')->setWidth(20);  
        $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('G')->setWidth(10); 
        // 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]['member_id']);//会员ID
            $objPHPExcel->getActiveSheet()->setCellValue('C'.($i+2),$list[$i]['username']);//会员姓名
            $objPHPExcel->getActiveSheet()->setCellValue('D'.($i+2),$list[$i]['phone']);//会员号码
            $objPHPExcel->getActiveSheet()->setCellValue('E'.($i+2),$list[$i]['total']);//提现金额

            $list[$i]['create_time'] = date('Y-m-d H:i:s',$list[$i]['create_time']);
            $objPHPExcel->getActiveSheet()->setCellValue('F'.($i+2),$list[$i]['create_time']);//提现时间
            switch ($list[$i]['is_check']) {
                case 1:
                    $list[$i]['is_check'] = '通过';
                    break;
                case 2:
                    $list[$i]['is_check'] = '拒绝';
                    break;
                
                default:
                    $list[$i]['is_check'] = '未审核';
                    break;
            }
            $objPHPExcel->getActiveSheet()->setCellValue('G'.($i+2),$list[$i]['is_check']);//审核状态
        }
        //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;
        }

 

posted @ 2020-05-13 15:44  A毛毛  阅读(980)  评论(0编辑  收藏  举报