项目中遇到的解析Excel文件,放入到数据库中,记录一下遇到的坑:
1.jsp文件
提交表单:
(‘#form1’)必须为multipart/form-data
要添加form.js插件
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title>
</head>
<body>
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header" style="background-color: #6D7484">
<!--右上角关闭按钮-->
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">x</button>
<!--标题-->
<h4 class="modal-title" id="myModalLabel">
<span style="color: white"><b>导入投资者分组</b></span>
</h4>
</div>
<!--表单主体-->
<div class="modal-body">
<form method="POST" enctype="multipart/form-data" id="form1" action="/businessbasedata/investorinfo/importexcel/ajaxUpload.do">
<table>
<tr>
<td>上传文件: </td>
<td> <input id="upfile" type="file" name="upfile"></td>
</tr>
<tr>
<td><input type="submit" value="上传" onclick="checkData()"></td>
<td><input type="button" value="提交" id="btn" name="btn" ></td>
</tr>
</table>
</form>
</div>
<div class="modal-footer">
<button type="button" id="btn-close" class="btn btn-default" data-dismiss="modal">关闭</button>
<button type="button" id="btn-save" class="btn btn-primary" onclick="save();">保存</button>
</div>
</div><!-- /.modal-content -->
</div><!-- /.modal -->
</body>
<script>
//ajax 方式上传文件操作
$(document).ready(function(){
$('#btn').click(function(){
if(checkData()){
alert(111);
$('#form1').ajaxSubmit({
url:'/businessbasedata/investorinfo/importexcel/ajaxUpload.do',
dataType: 'text',
success: resutlMsg,
error: errorMsg
});
function resutlMsg(msg){
alert(msg);
$("#upfile").val("");
}
function errorMsg(){
alert("导入excel出错!");
}
}else{
alert('上传失败!');
}
});
});
//JS校验form表单信息
function checkData(){
var fileDir = $("#upfile").val();
var suffix = fileDir.substr(fileDir.lastIndexOf("."));
if("" == fileDir){
alert("选择需要导入的Excel文件!");
return false;
}
if(".xls" != suffix && ".xlsx" != suffix ){
alert("选择Excel格式的文件导入!");
return false;
}
return true;
}
</script>
</html>
2.controller
/**
* 导入
*/
@RequestMapping("/importexcel")
public ModelAndView importexcel() {
ModelAndView modelAndView = new ModelAndView("businessbasedata/investorgroupref/import");
return modelAndView;
}
/**
* 上传文件提交
*/
@RequestMapping(value="/importexcel/ajaxUpload.do",method={RequestMethod.GET,RequestMethod.POST})
public String ajaxUploadExcel(HttpServletRequest request,HttpServletResponse response) throws Exception {
return investorInfoService.ajaxUploadExcel(request, response);
}
3.service
开始老是在request与multipartHttpServletRequest转化那出错
1.spring-context.xml
配置
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!-- set the max upload size100MB --> <property name="maxUploadSize"> <value>10485760000</value> </property> <property name="maxInMemorySize"> <value>4096</value> </property> </bean>
2.添加multipartHttpServletRequest pom文件中添加maven依赖
<dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.2.1</version> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>1.4</version> </dependency>
2.
public String ajaxUploadExcel(HttpServletRequest request, HttpServletResponse response) {
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
MultipartFile file = multipartRequest.getFile("upfile");
if (file.isEmpty()) {
try {
throw new Exception("文件不存在!");
} catch (Exception e) {
e.printStackTrace();
}
}
InputStream in = null;
try {
in = file.getInputStream();
} catch (IOException e) {
e.printStackTrace();
}
List<List<Object>> listob = null;
try {
listob = new ExcelUtils().getBankListByExcel(in, file.getOriginalFilename());
} catch (Exception e) {
e.printStackTrace();
}
。。。。
}