zoukankan      html  css  js  c++  java
  • 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控制代码  

    /**
         * 批量导入测试者信息
         * @param request
         * @param response
         * @param bankName
         */
        @RequestMapping("uploadExecl")
        public void uploadBillFile(HttpServletRequest request, HttpServletResponse response){
            // TODO 设置 咨询师编号 获取session里
            Map map = sessionContext.get("frontUserInfo");
            String counselorId = (String) map.get("ID");//获取咨询师的id
            
            //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;
        }

  • 相关阅读:
    小福bbs-冲刺日志(第三天)
    小福bbs-冲刺日志(第二天)
    小福bbs-冲刺日志(第一天)
    灯塔-冲刺集合
    团队作业第六次—事后诸葛亮
    灯塔-冲刺总结
    灯塔-测试总结
    灯塔-冲刺日志(第七天)
    灯塔-冲刺日志(第六天)
    灯塔-冲刺日志(第五天)
  • 原文地址:https://www.cnblogs.com/zhuyuewei/p/6518114.html
Copyright © 2011-2022 走看看