导入功能
html代码
<div>
<form enctype="multipart/form-data" id="ssss">
<input type="file" name="files" id="dr" accept=".xls" style="margin-left: 30px"/>
<button class="btn" id="entranceInfo">导入</button>
</form>
<span id="prompt"></span>
</div>
js代码
$("#entranceInfo").click(function(){
event.preventDefault();//可以取消默认的from表单提交
var formData = new FormData($("#ssss")[0]);
console.log(formData);
if($("#dr").val()==null || $("#dr").val()==""){
createPnotify('error',"请选择Excel文件");
return;
}
$.ajax({
type: "post",
url: url,
data: formData,
cache: false,
contentType: false,
processData: false,
beforeSend: function (request) {
request.setRequestHeader("SESSIONID", localStorage.getItem('sessionId'));
},
success: function(result){
var datas = JSON.parse(result);
if(datas.code==200){
$("#prompt").html(" 成功:"+datas.data.success+",失败:"+datas.data.fail+"错误信息:"+(datas.data.prompt).replace(/H/g,"<br/> "));
infoTable.ajax.reload();
}else {
createPnotify('error',datas.msg);
}
}
})
});
后端接口
@RequestMapping(value = "/suifang/excelImport", method = RequestMethod.POST)
public void excelImport(@RequestParam("files") MultipartFile files ,HttpServletRequest request,HttpServletResponse response) {
System.out.println("8888888888888888888888"+files);
AjaxResponseMessage ajaxResponseMessage = new AjaxResponseMessage(ErrorCode.SYS_SUCCESS, messageUtil.getMessage("process.ok"));
int success=0;//成功
int fail=0;//失败
String prompt="";//错误信息
String path=" ";//表路径
try {
String filename = files.getOriginalFilename();
String _ext = filename.substring(filename.lastIndexOf("."));
path= PropertiesUtil.getString("temp.fileExcel.path")+File.separator+ DateUtil.getDays()+File.separator+System.currentTimeMillis()+_ext;
System.out.println(path);
FileUtils.writeByteArrayToFile(new File(path), files.getBytes());
Workbook workbook = Workbook.getWorkbook(new File(path));
Sheet sheet = workbook.getSheet(0);
for(int i=1;i<sheet.getRows();i++){
Cell[] cells = sheet.getRow(i);
FamliyAccessReq f = new FamliyAccessReq();
if(cells[0].getContents()!=null){
f.setUserName(cells[0].getContents());
}
if(cells[1].getContents()!=null){
f.setUserMobile(cells[1].getContents());
}
if(cells[2].getContents()!=null){
f.setSn(cells[2].getContents());
}
if("女".equals(cells[3].getContents()) ){
f.setGender((byte)1);
}else {
f.setGender((byte)0);
}
if(cells[4].getContents()!=null){
f.setAddress(cells[4].getContents());
}
if("OSA".equals(cells[3].getContents()) ){
f.setSnDevice((byte)1);
}else {
f.setSnDevice((byte)2);
}
if(cells[6].getContents()!=null){
f.setProvince(cells[6].getContents());
}
if(cells[7].getContents()!=null){
f.setCity(cells[7].getContents());
}
f.setKefu_id(1000077l);
System.out.println(f);
try {
familyAccessService.save(PlatomUtils.getSessionId(request), f);
success++;
}catch (BusinessException businessException) {
fail++;
prompt+="H第"+i+"行"+f.getUserName()+","+f.getSn()+messageUtil.getMessage("exception.code." + businessException.getCode());
}catch (Exception e){
fail++;
prompt+="H第"+i+"行"+f.getUserName()+","+f.getSn()+messageUtil.getMessage("process.error");
}
}
Map<String, String> map = new HashMap<String, String>();
map.put("success", success+"");
map.put("fail", fail+"");
map.put("prompt", prompt);
ajaxResponseMessage.setData(map);
workbook.close();
}catch (Exception e) {
ajaxResponseMessage.setCode(ErrorCode.SYS_ERROR);
ajaxResponseMessage.setMsg(messageUtil.getMessage("process.error"));
printLogger(e);
} finally {
new File(path).delete();
}
ServletResponseHelper.outUTF8(response, JSON.toJSONString(ajaxResponseMessage));
}
遇到的问题:
在from表单只设置一个button标签的话,会把button默认设置为提交按钮,并且from表单没有指定路径的话,会自动刷新本网页
解决方法
event.preventDefault();
可以取消表单默认