THINKPHP 導入xlxs文件

1、需要下載PHPExcel文件

 public function upload()
    {
        header("Content-Type:text/html;charset=utf-8");
        $upload = new \Think\Upload();// 實例化上傳類
        $upload->maxSize   =     3145728 ;// 設置附件上傳大小
        $upload->exts      =     array('xls', 'xlsx');// 設置附件上傳類
        $upload->savePath  =      '/'; // 設置附件上傳目錄
        // 上傳文件
    
        $info   =   $upload->uploadOne($_FILES['mypic']);
        $filename = './Uploads'.$info['savepath'].$info['savename'];
        $exts = $info['ext'];
        if ($exts != "xls" && $exts != "xlsx") {
            //echo '文件格式不對!';
            //exit;
        }
        
        if(!$info) {// 上傳錯誤提示錯誤信息
            die(json_encode(array("result"=>0)));
//             $this->error($upload->getError());
        }else{// 上傳成功調用導入的方法
            $this->import($filename, $exts);
        }
    }
    //時間轉換類
    public function GetData($val){
        $n = intval(($val - 25569) * 3600 * 24); //轉換成1970年以來的秒數
        $gregorian=gmdate('Y-m-d H:i:s', $n);//格式化時間
        return $gregorian;
    }
    
    //導入數據方法
    protected function import($filename, $exts)
    {
        //導入PHPExcel類庫,因爲PHPExcel沒有用命名空間,只能inport導入
        import("Org.Util.PHPExcel");
        //創建PHPExcel對象,注意,不能少了\
        $PHPExcel=new \PHPExcel();
        //如果excel文件後綴名爲.xls,導入這個類
    
        if($exts == 'xls'){
            import("Org.Util.PHPExcel.Reader.Excel5");
            $PHPReader=new \PHPExcel_Reader_Excel5();
        }else if($exts == 'xlsx'){
            import("Org.Util.PHPExcel.Reader.Excel2007");
            $PHPReader=new \PHPExcel_Reader_Excel2007();
        }
         
        $data=array();
        $data_sum=array();
        //載入文件
        $PHPExcel=$PHPReader->load($filename);
    
        //獲取表中的第一個工作表,如果要獲取第二個,把0改爲1,依次類推
        $currentSheet=$PHPExcel->getSheet(0);
        //獲取總列數
        $allColumn=$currentSheet->getHighestColumn();
        //獲取總行數
        $allRow=$currentSheet->getHighestRow();
        //循環獲取表中的數據,$currentRow表示當前行,從哪行開始讀取數據,索引值從0開始
        for($currentRow=2;$currentRow<=$allRow;$currentRow++){
            //從哪列開始,A表示第一列
            for($currentColumn='A';$currentColumn<=$allColumn;$currentColumn++){
                //數據座標
                $address=$currentColumn.$currentRow;
                //讀取到的數據,保存到數組$arr中
                $cell =$currentSheet->getCell($address)->getValue();
    
                if($cell instanceof PHPExcel_RichText){
                    $cell  = $cell->__toString();
                }
    
                $data[$currentColumn]=$cell;
                if('H'==$currentColumn)
                {
                    $data[$currentColumn]=$this->GetData($data[$currentColumn]);
                }else if('F'==$currentColumn){
                    if("到件"==$data[$currentColumn])
                    {
                        $data[$currentColumn]=1;
                    }else if("分發"==$data[$currentColumn])
                    {
                        $data[$currentColumn]=2;
                    }else if("簽收"==$data[$currentColumn])
                    {
                        $data[$currentColumn]=3;
                    }else if("異常"==$data[$currentColumn])
                    {
                        $data[$currentColumn]=4;
                    }
                }
    
            }
            $data_sum[$currentRow]=$data;
    
        }
        $this->save_import($data_sum);
    }
    
    
    //保存導入數據
    public function save_import($data){
        $map=M('user');
        $map->startTrans();
        $cout=count($data,0);
        $success=0;
        $error=0;
        
        foreach($data as $k=>$v){
             //echo $v['A'].'end...+';
           if($v["A"]){           
                $list = $map->where("name='".$v['A']."' and education= '".$v['F']."' and birth='".$v['C']."'")->select();
            if(!$list){
           if($v['B']=='男'){
               if($map->data($v)->add(array('name'=>$v['A'],'sex'=>0,'birth'=>$v['C'],'nation'=>$v['D'],'is_party_person'=>$v['E'],'education'=>$v['F'],'school'=>$v['G'],'join_data'=>$v['H'],'branch_id'=>$v['J'],'group_id'=>$v['K'],'identity'=>$v['I']))){
                   $success++;
               }else {
                   $error++;
               }
           }else{
               if($map->data($v)->add(array('name'=>$v['A'],'sex'=>1,'birth'=>$v['C'],'nation'=>$v['D'],'is_party_person'=>$v['E'],'education'=>$v['F'],'school'=>$v['G'],'join_data'=>$v['H'],'branch_id'=>$v['J'],'group_id'=>$v['K'],'identity'=>$v['I']))){
                   $success++;
               }else {
                   $error++;
               }
              }
             }
        }
             
        }
        if($success){
            die(json_encode(array('result'=>1)));
//             $this->success('導入成功', U('Manage/orgConstruction'));
        }else{
            die(json_encode(array('result'=>2)));
           // $this->error('導入失敗', U('Manage/orgConstruction'));
        }
    }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章