Java实现从网页上传导入excel数据到数据库

       一晃已经是十月份的最后一天了,时间过得很快...

       项目中通过excel往数据库批量导入的功能颇为常见,所以今天整理出来一份简单的例子,为了以后方便使用,同时也为大家实现功能作为一个参考,该框架采用SSM,可以结合自身业务修改即可使用

Spring配置文件加载解析器(文件上传)

       
       
	    
	    
	

HTML界面

的JavaScript的代码

                /*导入数据*/
		function importUsers(){
			//var clientid = $("#clientid").val();
			var FormDatas=new FormData($("#form-article-add")[0]);
			var fileName=$("#file").val();
			if(fileName == '') {
		          layer.msg('请选择文件!',{
		          	icon:MSG_CHECK,
		          	time:MSG_TIME
		          }); 
		          return false;
		      }
			//验证文件格式
		       var fileType = (fileName.substring(fileName.lastIndexOf(".") + 1, fileName.length)).toLowerCase();
			if (fileType != 'xlsx') {
				    layer.msg('文件格式不正确!',{
				     icon:MSG_CHECK,
				     time:MSG_TIME
				 });
				return false;
			} 
			$.ajax({
				type:'post',
				url:'',
				async : false,
				cache : false,
				contentType : false,
				processData : false,
				data:FormDatas,
				success: function(data){
					if(data == "error"){
						layer.msg("文件导入失败,请重新上传!", {
							icon: OPER_SB,
							shade: [0.3, '#393D49'], // 透明度  颜色
							time:5000
							});
						return false;
					}else{
						layer.msg("文件导入成功!", {
							icon: OPER_CG,
							shade: [0.3, '#393D49'], // 透明度  颜色
							time:5000
							});
						window.location.reload();
						return false;
					}
				},
				error : function(data){
					console.log(data.msg);
				}
			});
		}

sqlserver-表结构

Java实现从网页上传导入excel数据到数据库_第1张图片

 

控制器代码

         /**
	 * 导入学员清单
	 * @param file
	 * @param clientid 
	 * @return
	 * @throws IOException 
	 */
	@RequestMapping("importUsers")
	@ResponseBody
	public String importUsers(@RequestParam MultipartFile file,Integer clientid,HttpServletRequest request) throws IOException{
		
		boolean FLAG;//身份状态
		
		List list = new ArrayList();
		XSSFWorkbook workbook =null;
		
		//把MultipartFile转化为File 第一种
		CommonsMultipartFile cmf= (CommonsMultipartFile)file;
		DiskFileItem dfi=(DiskFileItem) cmf.getFileItem();
		File fo=dfi.getStoreLocation();
        
                //把MultipartFile转化为File 第二种
                //File fo = new File(file.getOriginalFilename());
                //FileUtils.copyInputStreamToFile(file.getInputStream(),fo);

		//创建Excel,读取文件内容
		workbook = new XSSFWorkbook(FileUtils.openInputStream(fo));

		//获取第一个工作表
		XSSFSheet sheet = workbook.getSheet("学员信息");
		
		//获取sheet中第一行行号
		int firstRowNum = sheet.getFirstRowNum();
		//获取sheet中最后一行行号
		int lastRowNum = sheet.getLastRowNum();
		
		try {
			//循环插入数据
			for(int i=firstRowNum+1;i<=lastRowNum;i++){
				XSSFRow row = sheet.getRow(i);
				
				Users users = new Users();
				
				users.setClientid(clientid);
				users.setAdddate(date);
				users.setStatus(true);//默认为启用状态
				
				XSSFCell username = row.getCell(0);//学员名称
				if(username!=null){
					username.setCellType(Cell.CELL_TYPE_STRING);
					users.setUsername((username.getStringCellValue()));
				}
				
				XSSFCell phone = row.getCell(1);//联系方式
				if(phone!=null){
					phone.setCellType(Cell.CELL_TYPE_STRING);
					users.setPhone((phone.getStringCellValue()));
				}
				
				XSSFCell post = row.getCell(2);//职位
				if(post!=null){
					post.setCellType(Cell.CELL_TYPE_STRING);
					users.setPost((post.getStringCellValue()));
				}
				
				XSSFCell identitys = row.getCell(3);//身份
				if(identitys!=null){
					identitys.setCellType(Cell.CELL_TYPE_STRING);
					if(identitys.getStringCellValue().equals("学员")){
						FLAG = false;
					}else{
						FLAG = true;
					}
					users.setIdentitys(FLAG);
				}
				list.add(users);
			}
			//usersMapper.insert(list);//往数据库插入数据
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			workbook.close();
		}
		
	}

Excel中中的模板

选择的Excel文件上传,看数据是否导入数据库

Java实现从网页上传导入excel数据到数据库_第2张图片

通用的工具类 :

 Java 使用 Poi 导入 Excel 通用(一)

Java 使用 Poi 导出 Excel 通用(二)

以上就是本文的全部内容,希望对大家的学习有所帮助,欢迎评论交流。能get到知识点不要忘了关注点个赞~ 拒绝白嫖从我们做起hh~ 

 

你可能感兴趣的:(【Java】,【SpringMVC】)