YII excel导入

public function actionExam_import()
    {
        Yii::import("application.vendors.*");
        require_once 'PHPExcel.php';
        require_once 'PHPExcel/IOFactory.php';
        require_once 'PHPExcel/Writer/Excel2007.php';
        $schoolid = $this->school_id;
        $this->menu=array('r'=>6,'t'=>7);
        $school_model = School::model()->find('id=:id',array(':id'=>$this->school_id));
        if(!$school_model){
            $this->halt('操作失败','操作失败!学校信息获取失败');
        }
        $objExcel = new PHPExcel();
        $strArr = array();
        $nameArr = array();
        $tempArr =array();
        $examArr = array();
        $guardianArr = array();
        if($_POST['leadExcel'] == "true")
            {
                $filename = $_FILES['exam_file']['name'];
                $tmp_path = $_FILES['exam_file']['tmp_name'];
                
                $path_name = pathinfo($filename);
                $extension = $path_name['extension'];
                //echo $extension;exit;
                if($extension != 'xls'){
                    $this->message('上传文件类型错误','请按照正确模板(成绩导入模板.xls)进行导入',false,$this->createUrl('Message/exam_import'));
                    return;
                }
                $objReader = PHPExcel_IOFactory::createReader('Excel5');//2007
                $objPHPExcel =$objReader->load($tmp_path);
                   $sheet = $objPHPExcel->getSheet(0);
                $highestRow = $sheet->getHighestRow();           //取得总行数
                $highestColumn = $sheet->getHighestColumn(); //取得总列数
                for($j=2;$j<=$highestRow;$j++){
                    $str = ''; $exam = '';               //从第一行开始读取数据
                    for($k='A';$k<=$highestColumn;$k++){            //从A列读取数据
                    $str.='<td>'.$objPHPExcel->getActiveSheet()->getCell("$k$j")->getValue().'</td>';//读取单元格
                    $exam.=$objPHPExcel->getActiveSheet()->getCell("$k$j")->getValue().' ';
                    }
                    $tempArr = explode(' ', $exam);
                    array_push($strArr,$str);
                    $name = $objPHPExcel->getActiveSheet()->getCell("A$j")->getValue();
                    array_push($nameArr,$name);
                    array_push($examArr,$tempArr);
                }
                    
                foreach ($examArr as $k => &$v){
                    $v[2]='语文:'.$v[2];
                    $v[3]='数学:'.$v[3];
                    $v[4]='英语:'.$v[4];
                    $v[5]='物理:'.$v[5];
                    $v[6]='化学:'.$v[6];
                    $v[7]='生物:'.$v[7];
                    $v[8]='政治:'.$v[8];
                    $v[9]='历史:'.$v[9];
                    $v[10]='地理:'.$v[10];
                    $v[11]='总分:'.$v[11];
                    $v[12]='年级排名:'.$v[12];
                    $v[13]='班级排名:'.$v[13];
                    
                }
                
                foreach ($examArr as $t=>$name) {
                    $guardianArr[$t]['mobile']=Yii::app()->db->createCommand("select mobile from guardian where id in(select guardian_id from student_guardian where student_id in (select id from student where name='$name[0]'))")->queryAll();
                    $guardianArr[$t]['exam'] = implode(',', $name);
                }
                
                $guardianStr=serialize($guardianArr);
                $redis_client = new RedisClient();
                $redis_client->save_exam_import_data($guardianStr);
            
            }
        
        $this->render('exam_import',array(
           'school_model'=>$school_model,
           'student_exam'=>$strArr
        ));
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值