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;
        }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM