laravel 实现上传 excel

//导入电话号码
    public function postTel(){
        set_time_limit(0);
        ini_set('memory_limit','1024M');

        $params = Input::all();
        $add_data['admin_id'] = Auth::user()->id;

        //更新
        if($params['id']){
            if($this->service->updateOne($params)){
                return ['success'=>1,'message'=>'更新成功'];
            }else{
                return ['success'=>0,'message'=>'更新成功'.$this->service->getError()];
            }

        }else{
        //新增
            if($params['content'] == ''){
                return ['success'=>0,'message'=>'添加失败,短信内容不能为空'];
            }
            
            $file_path='';
            $message='';

            if($this->upload($file_path,$message,true)===false)
            {
                return ['success'=>0,'message'=>'添加失败'.$message];
            }
            $import_result=$this->qqImportExecute($file_path,$message);
         
            if($import_result===false)
            {
                return ['success'=>0,'message'=>'添加失败'.$message];
            }
             
            $params['mobile'] = $import_result;
            if($this->service->addOne($params)){
                return ['success'=>1,'message'=>'新增成功'];
            }else{
                return ['success'=>0,'message'=>'添加失败'.$this->service->getError()];
            }

        }

    }
    private function upload(&$file_path,&$message,$rand)
    {
    
        $upload_path='sms/imports';
        $file_max_size=1024 * 1024*50; //文件最大
        $file_types=array('xls','xlsx','csv'); 

        if(count($_FILES)==0 || $_FILES['import']['size'] ==0)
        {
            $message="电话号码不能为空";
            return false;
        }
        $files=array_values($_FILES);
    
        $up_file=$files[0];
        $file_size=$up_file['size'];
        if($file_size>$file_max_size)
        {
            $message='你上传的文件过大,最大为:' . $file_max_size/1024/1024 . 'MB';
            return false;
        }
    
        $up_filename=$up_file['name'];
        $filename_arr=explode('.', $up_filename);
        $file_ext=array_pop($filename_arr);
        if(!in_array($file_ext,$file_types))
        {
            $message='你上传的文件类型不对!目前只支持'. implode(',', $file_types);;
            return false;
        }
        //创建导入根目录
        $upload_path=storage_path($upload_path);
        if(!is_dir($upload_path) && !@mkdir($upload_path, 0777, true))
        {
            $message='上传配置路径配置不对!';
            return false;
        }
        $tmp_name=$up_file['tmp_name'];
        if($rand){
            list($file_name,$file_ext) = explode('.', $files[0]['name']) ;
            if($file_ext=='xlsx'){
                $file_ext = 'xls';
            }            
            $filename= md5($file_name).'.'.$file_ext;
            $file_path=$upload_path. '/' . $filename;
        }else{
            $filename=date('YmdHis',time()). rand(10, 99) .'.' . $file_ext;
            $file_path=$upload_path. '/' . $filename;
        }
    
    
        if(!move_uploaded_file($tmp_name,$file_path)){
            $message='上传文件失败!';
    
            return false;
        }
        return true;
    }
    
    private function qqImportExecute($file_path,&$message)
    {
        set_time_limit(0);
        ini_set('memory_limit','1024M');
        if(!file_exists($file_path))
        {
            $message="文件找不到!";
            return false;
        }
        //获取表中的数据
    
        $rows = $this->Excelfile_to_row_Array($file_path,0);   

        if(count($rows)==0)
        {
            $message="没有可操作的数据。";
            return false;
        } 

        if($rows){
            $data = [];
            foreach($rows as $key=>$val){
                if(!$val[0]){
                    continue;
                }
                if(preg_match("/^1\d{10}$/",trim($val[0]))){
                    $data[] = $val[0];
                }
                
            }

            return $data;
        }
           return true;
        
    }
    
    public function Excelfile_to_row_Array($file_path,$sheet_site=0){//将文件转换成数组
         
        $objPHPExcel = Excel::load($file_path);
         
        $sheets = $objPHPExcel->getALLSheets();
    
        $countSheets = count($sheets);
        $sheetsinfo = array();
        $sheetData = array();
    
        $sheet = $sheets[$sheet_site];
        $row_count=$sheet->getHighestRow();
    
        if($row_count<=1)
        {
            $message="上传的excel格式不对,或没数据";
            return false;
        }
        $sheetsinfo["rows"] = $sheet->getHighestRow();
    
        $sheetsinfo["column"] = PHPExcel_Cell::columnIndexFromString($sheet->getHighestColumn());
    
        for($row=1;$row<=$sheetsinfo["rows"];$row++){
            for($col=0;$col<$sheetsinfo["column"];$col++){
                $sheetData[$row][$col] = trim($sheet->getCellByColumnAndRow($col,$row)->getValue(),'=');
            }
        }
    
        return $sheetData;
    
    }

 

posted @ 2017-01-04 17:13  桔子木木  阅读(3296)  评论(0编辑  收藏  举报