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(); } }
phpExcel导入数据
猜你喜欢
转载自www.cnblogs.com/zrn-php/p/9254478.html
今日推荐
周排行