tp5做的excel导入导出(用的PHPexcel类)

//ajax没有流类型,需要另外的处理方式
//
应用公共文件 function excelExport($fileName = '', $headArr = [], $data = []) { //引入phpExecl类 vendor("PHPExcel.PHPExcel"); $fileName .= "_" . date("Y_m_d").'.xls'; $objPHPExcel = new \PHPExcel(); $objPHPExcel->getProperties(); $key = ord("A"); // 设置表头 foreach ($headArr as $v) { $colum = chr($key); $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '1', $v); $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '1', $v); $key += 1; } $column = 2; $objActSheet = $objPHPExcel->getActiveSheet(); foreach ($data as $key => $rows) { // 行写入 $span = ord("A"); foreach ($rows as $keyName => $value) { // 列写入 $objActSheet->setCellValue(chr($span) . $column, $value); $span++; } $column++; } $fileName = iconv("utf-8", "gb2312", $fileName); // 重命名表 $objPHPExcel->setActiveSheetIndex(0); // 设置活动单指数到第一个表,所以Excel打开这是第一个表 header('Content-Type: application/vnd.ms-excel'); header("Content-Disposition: attachment;filename='$fileName'"); header('Cache-Control: max-age=0'); $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); $objWriter->save('php://output'); // 文件通过浏览器下载 exit(); }
public function export()
    {    
        $data = \think\Cache::get('res_key');
        if(!$data)
        {
            $this->error('请设置要导出的数据','/student_y');
        }
        $name='xxxx';

        $header=['考点代码','考点名称','考试时间','考试级别','身份证','中文名','英文名','性别(1男2女)','座位号','缴费'];

        excelExport($name,$header,$data);
    }

导入

//import
    public function excelInsert()
    {
        if($this->request->isPost())
        {
            $filestr = $this->request->param();
             Loader::import('PHPExcel',EXTEND_PATH);
            Loader::import('PHPExcel.PHPExcel.IOFactory',EXTEND_PATH);
            Loader::import('PHPExcel\PHPExcel\Reader\Excel5',EXTEND_PATH);
            Loader::import('PHPExcel\PHPExcel\Reader\Excel2007',EXTEND_PATH);
            $file = request()->file('file');
            if($file=='')
            {
                $this->success('请选择要导入的数据');
            }
            $info = $file->validate(['size'=>156780,'ext'=>'xlsx,xls,csv'])->move(ROOT_PATH . 'public' . DS . 'excel'); 
            if($info)
            {
                //echo $info->getFilename();
                $exclePath = $info->getSaveName();  //获取文件名
                $str=explode('.', $exclePath);
                $extension = end($str); 
                $file_name = ROOT_PATH . 'public' . DS . 'excel' . DS . $exclePath;
                //$objReader =\PHPExcel_IOFactory::createReader("Excel5");
                if( $extension =='xlsx' )
                {
                    $objReader =\PHPExcel_IOFactory::createReader("Excel2007");
                }
                else
                {
                    $objReader =\PHPExcel_IOFactory::createReader("Excel5");
                }
                $obj_PHPExcel =$objReader->load($file_name, $encode = 'utf-8');  //加载文件内容,编码utf-8
                $excel_array=$obj_PHPExcel->getsheet(0)->toArray();   //转换为数组格式
                array_shift($excel_array);                
                $data = [];
                foreach($excel_array as $k=>$v)
                {
                    $data[$k]['room_number'] = isset($v[0])==true ? $v[0] : '';//考点代码
                    $data[$k]['idcard'] = isset($v[1])==true ? $v[1] : '';    //身份证
                    $data[$k]['en_name'] = isset($v[2])==true ? $v[2] : '';    
                    $data[$k]['cn_name'] = isset($v[3])==true ? $v[3] : '';
                    $data[$k]['sex'] = intval(isset($v[4])==true ? $v[4] : '');
                    $data[$k]['seat_number'] = isset($v[5])==true ? $v[5] : '';
                    $data[$k]['birthday'] = isset($v[6])==true ? $v[6] : '';
                    $data[$k]['mobile'] = intval(isset($v[7])==true ? $v[7] : '');
                    $data[$k]['house_address'] = isset($v[8])==true ? $v[8] : '';
                    $data[$k]['email'] = isset($v[9])==true ? $v[9] : '';
                    $data[$k]['places'] = isset($v[10])==true ? $v[10] : '';
                    $data[$k]['exam_num'] = isset($v[11])==true ? $v[11] : '';
                    $data[$k]['res'] = isset($v[12])==true ? $v[12] : '';
                    $data[$k]['res2'] = isset($v[13])==true ? $v[13] : '';
                    $data[$k]['school'] = isset($v[14])==true ? $v[14] : '';
                    $data[$k]['res_time'] = isset($v[15])==true ? $v[15] : '0';
                    $data[$k]['price'] = isset($v[16])==true ? $v[16] : '';
                    $data[$k]['group'] = isset($v[17])==true ? $v[17] : '';
                    $data[$k]['flag'] = isset($v[18])==true ? $v[18] : '';
                    $data[$k]['status'] = 1;
                    
                }
                $rtn = Db::table('ncet_student')->insertAll($data); //批量插入数据
                if($rtn)
                {
                    $this->success('导入完成');
                }
                else
                {
                    $this->success('导入失败');
                }
            }
            else
            {
                echo $file->getError();
            }
        }
    }


//改进版
function downExplode()
    {
        $batchid = $this->input->get('batchid');
        if($batchid)
        {
            $batchArr = $this->db->select('*')->from('mba_interview_result')->where(['batch_id'=>$batchid])->get()->result_array();            
            $userArr = array();
            $res = array();
            foreach($batchArr as $k=>$v)
            {
                if(is_string($v['personal_interview']))
                {
                    $result = json_decode($v['personal_interview'],true);
                    $res[] = $result;
                    foreach($result as $k2=>$v2)
                    {
                        $userArr[$k2]['name'] = $this->name($k2,'name');
                        $userArr[$k2]['idcard'] = $this->name($k2,'idcard');
                        $userArr[$k2]['kaochang_id'] = $this->kaochang($v['session_id']);
                        /* 获取学生的考官id */
                        $groupid = $this->db->select('id')->from('mmmmmm')->where(['session_id'=>$v['session_id'],'kaochang_id'=>$v['kaochang_id']])->get()->result_array();
                        //教师数量
                        $tArr = $this->db->select('teacher_id')->from('mmmmmm')->where(['group_id'=>$groupid[0]['id']])->get()->result_array();
                        $i=0;
                        foreach($tArr as $k3=>$v3)
                        {
                            $userArr[$k2]["t_".$i] = $this->getRecommend($k2,$v['session_id'],$v['batch_id'],$v3);
                            $i++;
                        }
                    }
                }
            }
            
            $count=0;
            foreach($userArr as $k=>$v)
            {    
                $i=0;
                foreach($v as $k2=>$v2)
                {
                    $count+=$v["t_".$i];                
                    $i++;
                }
                $userArr[$k]['recommend'] = $count;
                $count=0;
            }
             
            //导出
            include($_SERVER['DOCUMENT_ROOT']."/resource/PHPExcel/Classes/PHPExcel.php");
            include($_SERVER['DOCUMENT_ROOT']."/resource/PHPExcel/Classes/PHPExcel/IOFactory.php");
            $objPHPExcel = new PHPExcel();
            $i=1;
            foreach($tArr as $index=>$val)
            {
                $title['name'] = '姓名';
                $title['idcard']='身份证号';
                $title['session']='考场';
                $title["interview".$i] = '考官'.$i;
                //$title["recommend"] = '推荐数量';
                $i++;
            }
            $title["recommend"] = '推荐数量';
            
            $i=1;
            foreach($title as $index=>$val)
            {
                $y = chr(64+$i);
                $x = 1;
                $objPHPExcel->setActiveSheetIndex(0)->setCellValue($y.$x,$val);
                $i++;
            }
            
            foreach($userArr as $k=>$v)
            {
                if(!$v['recommend'])
                {
                    unset($userArr[$k]);
                }
            }
            
            
            
            $x=1;
            foreach($userArr as $k=>$v)
            {
                if($v['name'])
                {
                    $x++;
                    
                }
                $i=1;
                foreach($v as $k2=>$v2)
                {
                    $i++;
                    $y = chr(63+$i);
                    $objPHPExcel->getActiveSheet()->setCellValueExplicit($y.$x,$v2,PHPExcel_Cell_DataType::TYPE_STRING);
                }
            }
            
            //die;
            $fileName = iconv("utf-8", "gb2312", '考官推荐'); // 重命名表

            $objPHPExcel->setActiveSheetIndex(0); // 设置活动单指数到第一个表,所以Excel打开这是第一个表

            header('Content-Type: application/vnd.ms-excel');

            header("Content-Disposition: attachment;filename='$fileName'.xls");

            header('Cache-Control: max-age=0');

            $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');

            $objWriter->save('php://output'); // 文件通过浏览器下载

            exit();            
        }
    }

 

 

 

function downExplode(){$batchid = $this->input->get('batchid');if($batchid){$batchArr = $this->db->select('*')->from('mba_interview_result')->where(['batch_id'=>$batchid])->get()->result_array();$userArr = array();$res = array();foreach($batchArr as $k=>$v){if(is_string($v['personal_interview'])){$result = json_decode($v['personal_interview'],true);$res[] = $result;foreach($result as $k2=>$v2){$userArr[$k2]['name'] = $this->name($k2,'name');$userArr[$k2]['idcard'] = $this->name($k2,'idcard');$userArr[$k2]['kaochang_id'] = $this->kaochang($v['session_id']);/* 获取学生的考官id */$groupid = $this->db->select('id')->from('mba_interview_group')->where(['session_id'=>$v['session_id'],'kaochang_id'=>$v['kaochang_id']])->get()->result_array();//教师数量$tArr = $this->db->select('teacher_id')->from('mba_interview_group_teacher')->where(['group_id'=>$groupid[0]['id']])->get()->result_array();$i=0;foreach($tArr as $k3=>$v3){$userArr[$k2]["t_".$i] = $this->getRecommend($k2,$v['session_id'],$v['batch_id'],$v3);$i++;}}}}/* echo '<pre>';print_r($userArr);echo '</pre>';die; */$count=0;foreach($userArr as $k=>$v){$i=0;foreach($v as $k2=>$v2){$count+=$v["t_".$i];$i++;}$userArr[$k]['recommend'] = $count;$count=0;} //导出include($_SERVER['DOCUMENT_ROOT']."/resource/PHPExcel/Classes/PHPExcel.php");include($_SERVER['DOCUMENT_ROOT']."/resource/PHPExcel/Classes/PHPExcel/IOFactory.php");$objPHPExcel = new PHPExcel();$i=1;foreach($tArr as $index=>$val){$title['name'] = '姓名';$title['idcard']='身份证号';$title['session']='考场';$title["interview".$i] = '考官'.$i;//$title["recommend"] = '推荐数量';$i++;}$title["recommend"] = '推荐数量';$i=1;foreach($title as $index=>$val){$y = chr(64+$i);$x = 1;$objPHPExcel->setActiveSheetIndex(0)->setCellValue($y.$x,$val);$i++;}foreach($userArr as $k=>$v){if(!$v['recommend']){unset($userArr[$k]);}}$x=1;foreach($userArr as $k=>$v){if($v['name']){$x++;}$i=1;foreach($v as $k2=>$v2){$i++;$y = chr(63+$i);$objPHPExcel->getActiveSheet()->setCellValueExplicit($y.$x,$v2,PHPExcel_Cell_DataType::TYPE_STRING);}}//die;$fileName = iconv("utf-8", "gb2312", '考官推荐'); // 重命名表
$objPHPExcel->setActiveSheetIndex(0); // 设置活动单指数到第一个表,所以Excel打开这是第一个表
header('Content-Type: application/vnd.ms-excel');
header("Content-Disposition: attachment;filename='$fileName'.xls");
header('Cache-Control: max-age=0');
$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save('php://output'); // 文件通过浏览器下载
exit();}}

posted on 2018-04-11 12:03  _zxd  阅读(273)  评论(0编辑  收藏  举报