phpExcel导入数据

public function import_table(){
        $table=input('table');
        //获取表格的大小,限制上传表格的大小5M
        $file_size = $_FILES['file']['size'];
        if ($file_size>5*1024*1024) {
            echo "上传失败,上传的表格不能超过5M的大小";
            exit();
        }

        //限制上传表格类型
        $file_type = $_FILES['file']['type'];
       // var_dump($file_type);
       // exit;
        if ($file_type!='application/vnd.ms-excel' && $file_type!='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet') {
            echo "上传失败,只能上传excel的xls、xlsx格式!";
            exit();
        }

        //判断表格是否上传成功
        if (is_uploaded_file($_FILES['file']['tmp_name'])) {
            vendor("PHPExcel.PHPExcel");
            vendor("PHPExcel.Reader.Excel2007");
            vendor("PHPExcel.IOFactory");
            //以上三步加载phpExcel的类

        //   var_dump($table);
          //  exit;

            if($_FILES['file']['name']!='export_'.$table.'_model.xls' && $_FILES['file']['name']!='export_'.$table.'_model.xlsx'){
                echo "上传失败,文件名错误,请上传正确的文件!";
                exit();
            }

            $objReader = \PHPExcel_IOFactory::createReader('Excel2007');//use excel2007 for 2007 format
            //接收存在缓存中的excel表格
            $filename = $_FILES['file']['tmp_name'];
            $objPHPExcel = $objReader->load($filename); //$filename可以是上传的表格,或者是指定的表格
            $sheet = $objPHPExcel->getSheet(0);
            $highestRow = $sheet->getHighestRow(); // 取得总行数
             $highestColumn = $sheet->getHighestColumn(); // 取得总列数
            $end_index     = \PHPExcel_Cell::columnIndexFromString($highestColumn);//由列名转为列数('AB'->28)

            $dataset=array();
            for($j=3;$j<=$highestRow;$j++) {//行数是以第1行开始
                $aa=0;
                for ($column = 0; $column <= $end_index; $column++) {//列数是以A列开始
                    $aa++;
                    $col=IntToChr($column);
                    $dataset[$j][] = $sheet->getCell($col.$j)->getValue();
                }
            }

            foreach ($dataset as $k=>$v){
                switch ($table) {
                    case 'village':
                        $fields=array('villageCode','villageName','provinceCode','cityCode','districtCode','streetCode','roadCode','address','policeStation','picUrl','lon','lat','alt','gis_area','gis_type');
                        $f=[];
                        foreach ($fields as $kk=>$vv){$f[$vv]=$v[$kk];
                        }
                        Db('village')->insert($f);
                        break;
                    case 'people':
                        $fields=array('peopleName','gender','nation','birthDate','origin','peopleType','credentialType','credentialNo','villageCode','domicile','streetCode','domicileRoadCode','domicileAddress','residence','residenceCode','residenceRoadCode','residenceAddress','educationCode','maritalStatusCode','spouseName','spouseType','spouseNO','nationalityCode','entryTime','surnameEng','nameEng','phoneNoOne','phoneNoOnePerson','phoneNoOnePersonType','phoneNoOnePersonID','phoneNoTwo','phoneNoTwoPerson','phoneNoTwoPersonType','phoneNoTwoPersonID','phoneNoThree','phoneNoThreePerson','phoneNoThreePersonType','phoneNoThreePersonID','idCardPicUrl','source','rowTime');
                        $f=[];
                        foreach ($fields as $kk=>$vv){$f[$vv]=$v[$kk];
                        }
                        Db('people')->insert($f);
                        break;
                    case 'build':
                        $fields=array('villageCode','buildingCode','buildingNo','floorTotal','houseTotal','Note','lon','lat','alt','gisArea','gisType','rowTime');
                        $f=[];
                        foreach ($fields as $kk=>$vv){$f[$vv]=$v[$kk];
                        }
                        Db('build')->insert($f);
                        break;
                    case 'house':
                        $fields=array('villageCode','buildingCode','floor','houseNo','houseCode','houseLabel','housePurpose','houseArea','peopleNumber','Note','lon','lat','alt','gisType','rowTime');
                        $f=[];
                        foreach ($fields as $kk=>$vv){$f[$vv]=$v[$kk];
                        }
                        Db('house')->insert($f);
                        break;
                    case 'company':
                        $fields=array('companyCode','villageCode','companyName','companyType','companyAdress','companyPic','lon','lat','alt','gisType');
                        $f=[];
                        foreach ($fields as $kk=>$vv){$f[$vv]=$v[$kk];
                        }
                        Db('company')->insert($f);
                        break;
                    case 'company_house':
                        $fields=array('companyCode','buildingCode','houseNo','rowTime');
                        $f=[];
                        foreach ($fields as $kk=>$vv){
                            $f[$vv]=$v[$kk];
                        }
                        Db('company_house')->insert($f);
                        break;
                    case 'company_people':
                        $fields=array('villageCode','buildingNo','houseNo','companyCode','credentialType','credentialNo','phone','entrydate','jobtitle','remark','idCardpicUrl');
                        $f=[];
                        foreach ($fields as $kk=>$vv){
                            $f[$vv]=$v[$kk];
                        }
                        Db('company_people')->insert($f);
                        break;
                }
            }
            $this->success('导入成功',url('Index/index'));
            exit();
        }
    }

猜你喜欢

转载自www.cnblogs.com/zrn-php/p/9254478.html
今日推荐