步骤1:导入所需要的jar包
主要所用到jar有:commons-fileupload-1.3.3.jar、commons-io-2.5.jar、jxl-2.6.jar(核心的ssm框架jar包就不说了)
步骤2: 配置SpringMVC
<!-- SpringMVC文件上传 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!--defaultEncoding:请求的编码格式必须和用户JSP的编码一致,以便正确读取表单中的内容。
uploadTempDir:文件上传过程中的临时目录,上传完成后,临时文件会自动删除
maxUploadSize:设置文件上传大小上限(单位为字节) -->
<property name="defaultEncoding" value="UTF-8" />
<property name="maxUploadSize" value="102400000" />
<!--uploadTempDir可以不做设置,有默认的路径,上传完毕会临时文件会自动被清理掉
<property name="uploadTempDir" value="upload/temp"></property> -->
</bean>
步骤3:前台代码
<form action="后台连接" method="post" enctype="multipart/form-data">
请选择文件:<input type="file" class="btn btn-default" name="file"><br/>
<input type="submit" class="btn btn-default" value="提交">
</form>
步骤4:后台代码
@RequestMapping("upload.it")
public void upload(HttpServletRequest request,HttpServletResponse response, MultipartFile file)throws IOException, ParseException {
// 时间的格式转换
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
// 创建实体对象 需要你创建实体
FlowInPopsVo vo = new FlowInPopsVo();
//记录数
int nos = 0;
try {
// 也可以用request获取上传文件
// MultipartFile fileFile = request.getFile("file"); //这里是页面的name属性
// 判断是否有输入流
if (file.getSize()!= 0) {
// 转换成输入流
InputStream is = file.getInputStream();
// 得到excel
Workbook workbook = Workbook.getWorkbook(is);
// 得到sheet
Sheet sheet = workbook.getSheet(0);
// 得到列数
int colsNum = sheet.getColumns();
// 得到行数
int rowsNum = sheet.getRows();
// 单元格
Cell cell;
// 创建map集合
Map<Integer, String> map = new HashMap<Integer, String>();
for (int i = 1; i < rowsNum; i++) {// 我的excel第一行是标题,所以 i从1开始
for (int j = 0; j < colsNum; j++) {
cell = sheet.getCell(j, i);// 注意:第一个参数是列.第二个参数是行
map.put(j, cell.getContents()); // 存储
}
// 从map里取出来的value存到实体中
vo.setId(map.get(0));
vo.setName(map.get(1));
// 时间的转换
if (map.get(5) != "") {
Date birth = sdf.parse(map.get(2));
vo.setBirth(new SimpleDateFormat("yyyy-MM-dd")
.format(birth));
} else {
vo.setBirth("");
}
// 判断是否为空
if (vo.getId() != "" && !" ".equals(vo.getId())) {
// 保存实体 需要你自己创建业务层
nos = flowInPopsService.addinpop(vo);
}
}
}
} catch (IOException e) {
e.printStackTrace();
} catch (BiffException e) {
e.printStackTrace();
}
response.setContentType("text/html; charset=UTF-8");
response.setHeader("Cache-Control", "no-cache"); // 在火狐下不设置返回类型的话,默认返回的是text/xml(xmldomcument)对象了。无法进行1==1比较,登不进系统。
PrintWriter out = response.getWriter();
if (nos > 0) {
System.out.println("添加成功");
out.print("1");
} else {
System.out.println("失败");
out.print("0");
}
out.flush();
out.close();
}
ps:如果遇到错误请查看 ssm往mysql中导入excel出现的错误