ThinkPHP导入Excel文件到数据库的简单实现

第一步:在官网下载PHPExcel插件下载传送门,放在ThinkPHP/Library/Vendor目录下

第二步:前端简单代码




	PHPexcel


	
	
上传文件:

第三步:后端接收及导入实现,Excel及数据库设计如下

Excel:

ThinkPHP导入Excel文件到数据库的简单实现_第1张图片


数据库字段设计:

ThinkPHP导入Excel文件到数据库的简单实现_第2张图片

后端逻辑代码:

display('Index/index');
    }

    public function upload()
    {	 
    	$mime_excel = $_FILES['excel_file']['type'];
    	 //定义excel的mime类型 简单过滤上传文件
    	 $arr_excel = array('application/vnd.ms-excel','application/x-excel', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
    	 if(!in_array($mime_excel,$arr_excel)){
    	 	$this->error("请提交execel文件");
    	 	exit;
    	 }
    	 $model = new \Think\Model();
    	 $upload = new \Think\Upload();// 实例化上传类
		 $upload->maxSize = 10485760 ;// 设置附件上传大小 10MB
		 $upload->rootPath = './public/'; // 设置附件上传根目录
		 $upload->savePath = ''; // 设置附件上传目录
		  // 上传文件
		$info = $upload->uploadOne($_FILES['excel_file']);
		if(!$info){
			$this->error('error');
		}
		else{
	    	vendor('PHPExcel.Classes.PHPExcel');
	    	$Excel = new \PHPExcel();
	    	$filename = $_SERVER['DOCUMENT_ROOT'].'/tp_phpexcel/Public/'.$info['savepath'].$info['savename'];//拼接上传文件路径
	    	if(file_exists($filename)){
	    		$inputFileType = \PHPExcel_IOFactory::identify($filename);
	    		// dump($inputFileType);exit;
				$reader = \PHPExcel_IOFactory::createReader($inputFileType); //设置以Excel5格式(Excel97-2003工作簿)  
				$PHPExcel = $reader->load($filename); // 载入excel文件  
				$sheet = $PHPExcel->getSheet(0); // 读取第一個工作表  
				$highestRow = $sheet->getHighestRow(); // 取得总行数  
				$highestColumm = $sheet->getHighestColumn(); // 取得总列数  
				$data = array();
				$i = 0;
				// 循环读取每个单元格的数据 
				for ($row = 1; $row <= $highestRow; $row++)    //行号从1开始  
				{  
				    $k = 0;
				    for ($column = 'A'; $column <= $highestColumm; $column++)  //列数是以A列开始  
				    {  
				        $dataset[] = $sheet->getCell($column.$row)->getValue();  
				        $data[$i][$k] =$sheet->getCell($column.$row)->getValue();
				        $k++;  
				        if($column == $highestColumm){
				            $i++;
				        }
				    }  
				}
				foreach( $data as $key => $value ) { //去除表头
				  if(in_array('部门',$value)) unset($data[$key]);
				}
				// 获取每一行的数据
				foreach ($data as $key => $value) {
					$ename = $value[0];
					$department = $value[1];
					$phone = $value[2];
					$charge = $value[3];
					$insert_info = $model->execute("insert into company (ename,department,phone,charge)values('".$ename."','".$department."','".$phone."','".$charge."')");
					if(!$insert_info){
						$this->error("数据导入失败,失败数据为".$ename.$department.$phone.$charge);exit;
					}
				}
				if($insert_info){
					$this->success("数据导入成功");
				}
	    	}else{
	    		$this->error("文件不存在");
	    	}
    	}
    }
}

你可能感兴趣的:(PHP)