<a class="edit" id="batchImport"> 批量導入 </a>
js代碼彈窗:
$("#batchImport").click(function(){
//彈窗彈窗下列內容
var html='<form id="execlForm" method="post" enctype="multipart/form-data">';
html+='<input type="file" name="file" id="execlFile" accept="application/vnd.ms-excel"/>';
html+='</form>';
layer.confirm(html, {
btn: ['導入','取消'] ,//按鈕
title:'導入測試者'
}, function(){
var file = $("#execlFile").val();
console.info(file);
var strFileName=file.replace(/^.+?\([^\]+?)(.[^.\]*?)?$/gi,"$1"); //正則表達式獲取文件名,不帶後綴
var fileName=file.replace(/.+./,"");
if(fileName==''){
layer.msg('請選擇上傳文件!', {time:1000});
return false;
}
$.ajax({
url: '<%=path %>/front/conner/uploadExecl.do?',
type: 'POST',
cache: false,
data: new FormData($('#execlForm')[0]),
processData: false,
contentType: false
}).done(function(res) {
console.info(res);
if(res=="true"){
layer.msg('上傳成功', {time:1000});
setTimeout(function(){
table.ajax.reload().draw();
},1500);
}else{
layer.msg('上傳失敗'+res+'條數據', {time:1000});
setTimeout(function(){
table.ajax.reload().draw();
},1500);
}
}).fail(function(res) {
//console.info(res);
});
});
});
controllor控制代碼
/**
- 批量導入測試者信息
- @param request
- @param response
-
//list集合接收讀取excel文件 List<MultipartFile> list = connerService.getMultipartFile(request); if(list.size()==0){ out.out(response, "false");//表示未上傳文件 }else{ String filename = list.get(0).getOriginalFilename(); //判斷讀取到的文件是否是excel格式 boolean flag = filename.endsWith(".xls"); if(flag){ try { //判斷正確則調用讀取excel文件的函數 out.out(response, connerService.uploadBillFile(list.get(0),counselorId)); } catch (Exception e) { e.printStackTrace(); out.out(response, "false"); } }else{ out.out(response, "false");//上傳的文件不是excel文件 } }
}
//Service代碼
/**
- 獲取上傳批量導入測試者信息
- @param request
-
@return
*/
public List<MultipartFile> getMultipartFile(HttpServletRequest request) {
List<MultipartFile> list = new ArrayList<MultipartFile>();
CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(
request.getSession().getServletContext());
// 判斷 request 是否有文件上傳,即多部分請求
if (multipartResolver.isMultipart(request)) {
// 轉換成多部分request
MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request;
// 取得request中的所有文件名
Iterator<String> iter = multiRequest.getFileNames();
while (iter.hasNext()) {
// 取得上傳文件
MultipartFile file = multiRequest.getFile(iter.next());
list.add(file);
}} return list;
}
/** - 讀取excel文件的操作
- @param billFile
- @return
-
@throws Exception
*/
public String uploadBillFile(MultipartFile billFile,String counselorId) throws Exception {
//創建集合
List<List> tolList = new ArrayList<List>();
InputStream is = billFile.getInputStream();
//讀取excel文件的工作區域
jxl.Workbook workbook = jxl.Workbook.getWorkbook(is);
//設置只獲取excel文件的第一個工作區
Sheet sheet = workbook.getSheet(0);
//獲取行
int rows = sheet.getRows();
//獲取列
int columns = sheet.getColumns();
//外循環獲取行
for(int i = 1; i < rows; i++){List eveList = new ArrayList<String>(); //定義布爾變量做標記 boolean flag=true; //內循環列 for(int j = 0 ; j < 14 ;j++){ //cell是jxl裏的類,在這裏獲取行和列 Cell cell = sheet.getCell(j, i); String content = cell.getContents(); //StringUtils.isBlank判斷某字符串是否爲空或長度爲0或由空白符 if(StringUtils.isBlank(content)){ flag=false; //爲假跳出 break; } //爲真添加到集合 eveList.add(content); } //判斷爲true添加到集合 if(flag){ tolList.add(eveList); } } //讀取excel文件,如果有錯誤返回一個異常信息 List errorList = userInfoDao.saveBatchConner(tolList,counselorId) ; String result = "true"; if(errorList.size() == 0){ }else{ result = ""+errorList.size(); } return result;
}
Dao層代碼
/**
- 諮詢師操作批量保存測試者,上傳excel操作
- 說明:函數主要讀取excel文件,保存實體
- @param tolList
-
@return
*/
public List saveBatchConner(List<List> toList,String counselorId) {
//學號,姓名,性別,出生日期,民族,血型,qq,郵箱,獨生子女,單親,所在地區,職業,學歷,備註,諮詢師驗證。
List<UserInfo> errorList=new ArrayList<UserInfo>();
//提取execl列數據到屬性集合,循環excel的內容
for(int i=0,len=toList.size();i<len;i++){
//獲取excel tolList.get(獲取一行).get(一行中的第一列).toString()
UserInfo userInfo = new UserInfo();
userInfo.setId(Uuid.getUuid());//獲取不重複編號
userInfo.setCounselorId(counselorId);
userInfo.setIsConner("1");//1表示是測試者
userInfo.setAccount(toList.get(i).get(0).toString());//獲取第一行第一列
userInfo.setUserName(toList.get(i).get(1).toString());//循環第一行第二列
userInfo.setSex(toList.get(i).get(2).toString());
userInfo.setBirthday(toList.get(i).get(3).toString());
userInfo.setNation(toList.get(i).get(4).toString());
userInfo.setBloodGroup(toList.get(i).get(5).toString());
userInfo.setQq(toList.get(i).get(6).toString());
userInfo.setEmail(toList.get(i).get(7).toString());
userInfo.setIsTheOnlyChild(toList.get(i).get(8).toString());//獨生
userInfo.setIsSingleParent(toList.get(i).get(9).toString());//單親
userInfo.setArea(toList.get(i).get(10).toString());//地區
userInfo.setProfession(toList.get(i).get(11).toString());//職業
userInfo.setEnducationlBackground(toList.get(i).get(12).toString());//學歷
userInfo.setRemark(toList.get(i).get(13).toString());//備註//保存到實體類 String flag=saveEntity(userInfo); //如果有錯誤信息則返回一個集合 if(!"true".equals(flag)){ errorList.add(userInfo); } } return errorList;
}