两个月没写东西了,今天拉出来操练操练。写一个Excel文档数据上传保存数据库。
一:准备工作
1、jar包:当时使用的Maven,自己就加入jar包了
net.sourceforge.jexcelapi jxl 2.6.10
2、现在就可以开始写了
@RequestMapping(value = "/importfile") public @ResponseBody Map importFile(HttpServletRequest request,HttpServletResponse response) throws Exception
返回map数据
String interfaceCode = ""; resultMap = new HashMap(); User user = null; String userName = null; //用户名 String realName = null; //真实姓名 String cellphone = null; //手机号 String deptName = null; //部门名称 String remark = null; //备注 int count = 0; //当前数据库正式员工数量 int total = 0; //总数:当前员工数量加上导入数量 Workbook book = null; File localFile = null;
定义变量
//授权正式员工数量 int presetNumber = Integer.parseInt(SysConfigUtil.getParamValue("accredit.official.employees"));
从配置文件中获取授权信息。
CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext()); if(multipartResolver.isMultipart(request)){ MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest)request; Iteratoriter = multiRequest.getFileNames(); while(iter.hasNext()){ MultipartFile file = multiRequest.getFile((String)iter.next()); if(file == null){ continue; }
SpringMVC自带的上传文件方法。
String fileName = file.getOriginalFilename(); String path = request.getServletContext().getRealPath("file/temp"); localFile = new File(path+"/"+fileName); file.transferTo(localFile); book = Workbook.getWorkbook(localFile);//获取文件
这边是获取文件
Sheet sheet = book.getSheet(0); //获得工作表对象 int rows = sheet.getRows(); //行 ListsuccessList = new ArrayList (rows); count = userService.countFindByuserType(2);//获取正式员工数量 total = rows+count;
创建工作表
if(total0 ; i --){ user = successList.get(i); userService.insert(user); roleService.authorize(user.getId(), user.getUserType()); } resultMap.put("result", "OK"); resultMap.put("message", "");
localFile.delete();
删除临时文件,这个最好放在finally里
循环遍历保存数据,刚开始做得时候是正确的信息保存,错误信息返回给用户,后来发现数据量大,就改为出现出错就返回给用户,改好之后再上传