springmvc上传文件
1> 配置相应的jar包
2> 需要在springmvc(springmvc-back.xml)中配置:SpringMVC上传文件时,需要配置MultipartResolver处理器
4>将 解析excel的逻辑放到service中,因为当进行批量导入是发生错误可 以回滚;IUserInfoService:
5> excel每一行为一个用户,excel表中的列顺序要与对象属性保持一致才能导入
UserInfoServiceImpl:(处理逻辑写这里,批量导入错误时才能回滚)
6> UserInfoController:(传入InputStream)
1> 配置相应的jar包
2> 需要在springmvc(springmvc-back.xml)中配置:SpringMVC上传文件时,需要配置MultipartResolver处理器
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding" value="UTF-8" />
<!-- 指定所上传文件的大小不能超过200M。注意maxUploadSize属性的限制不是针对单个文件,而是所有文件的容量之和 -->
<property name="maxUploadSize" value="200000"></property>
</bean>
3>jsp:导入用户信息页面:(bootstrap模态框)
<input type="button" value="导入用户信息" class="btn btn-primary" data-toggle="modal" data-target="#myModal"/>
<form action="user/imuser.do" method="post" enctype="multipart/form-data">
导入EXCELdiv 开始
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button>
<h4 class="modal-title" id="myModalLabel">用户信息——EXCEL导入</h4>
</div>
<div class="modal-body">
<input type="file" name="upfile"/>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">取消</button>
<button type="submit" class="btn btn-primary">导入数据
</button>
</div>
</div>
</div>
</div>
导入EXCELdiv 结束
</form>
4>将 解析excel的逻辑放到service中,因为当进行批量导入是发生错误可 以回滚;IUserInfoService:
/**
* 导入Excel中的数据到数据库
* @param in
*/
public void uploadExcel(InputStream in)throws Exception;
5> excel每一行为一个用户,excel表中的列顺序要与对象属性保持一致才能导入
UserInfoServiceImpl:(处理逻辑写这里,批量导入错误时才能回滚)
public void uploadExcel(InputStream in) throws Exception{
//选取Excel文件得到工作薄Workbook
Workbook book= Workbook.getWorkbook(in);
//通过Workbook的getSheet方法选择第一个工作表(从0开始)
Sheet sheet = book.getSheet(0);
//打印行列
System.out.println(sheet.getColumns());
System.out.println(sheet.getRows());
//循环取到每个单元格
for(int i=1;i<sheet.getRows();i++){
UserInfo user = new UserInfo();
//获取第二行第一列为姓名
Cell namecell=sheet.getCell(0,i);
String userName=namecell.getContents();
user.setUserName(userName);
//性别
Cell sexcell=sheet.getCell(1,i);
String userSex=sexcell.getContents();
user.setUserSex(userSex);
//电话号码
Cell phonecell=sheet.getCell(2,i);
String userPhone=phonecell.getContents();
user.setUserPhone(userPhone);
//密码
Cell pwcell=sheet.getCell(3,i);
String userPw=pwcell.getContents();
user.setUserPw(userPw);
//用户类型
Cell typecell=sheet.getCell(4,i);
String userType=typecell.getContents();
user.setUserType(userType);
//将用户添加到数据库
userdao.add(user);
}
book.close();
}
6> UserInfoController:(传入InputStream)
/**
* 导入Excel中用户信息到数据库
* @return
*/
@RequestMapping("user/imuser.do")
public String uploadExcel(@RequestParam(value = "upfile", required = false) MultipartFile file,Model model){
//提示信息
String info = "操作失败";
try {
userservice.uploadExcel(file.getInputStream());
info="操作成功!";
} catch (Exception e) {
e.printStackTrace();
}
//把提示信息传入到提示界面
model.addAttribute("info",info);
return "userinfo/userinfo_info";
}