Excel 一鍵上傳到數據庫

<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控制代碼

/**

//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;

    }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章