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();
}
}