java导入demo

1.jsp:
     (h-ui)
     
<!--弹框-导入-->
    <div id="festival_modal" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
        <form action="" method="post" class="form form-horizontal" id="form-festival-submit">
            <!-- <div class="modal fade" id="festival_modal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel"> -->
                <div class="modal-dialog" role="document">
                    <div class="modal-content radius">
                        <div class="modal-header">
                            <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
                            <h4 class="modal-title" id="myModalLabel">请选择Excel文件</h4>
                        </div>
                        <div class="modal-body">
                            <a href="###" class="form-control" style="border:none;">下载导入模板</a><br><br>
                            <span class="btn-upload form-group">
                              <input class="input-text upload-url radius" type="text" name="uploadfile-1" id="uploadfile-1" readonly><a                                    href="javascript:void();" class="btn btn-primary radius"><i class="Hui-iconfont">&#xe642;</i> 浏览文件</a>
                              <input type="file" name="uploadfile" class="input-file" id="uploadfile">
                            </span>
                        </div>
                        <div class="modal-footer">
                            <button class="btn btn-primary" type="submit">确定</button>
                            <button class="btn" data-dismiss="modal" aria-hidden="true">关闭</button>
                        </div>
                    </div>
                </div>
            <!-- </div> -->
        </form>
    </div>
2.js:
     
$("#form-festival-submit").validate({
        onkeyup:false,
        focusCleanup:true,
        success:"valid",
        submitHandler : function(form){
            $(form).ajaxSubmit({
                url : bPath+'/festival/config/upload.hrm',
                type : 'post',
                dataType : 'text',
                data : {
                    
                },
                success : function(data){
                    if(data == 'SUCC'){
                        alert('导入成功!');
                        window.location.reload();
                    }else if(data == "FAIL"){
                        alert('导入失败!')
                    }else if(data == "diffrent_year"){
                        alert('日期存在错误,请核实后再导入!')
                    }else if(data == "error_year"){
                        alert('日期有空值或者格式不正确!')
                    }
                }
            })
        }
    })
3.java:
     
@RequestMapping(value="upload",method=RequestMethod.POST)
    @ResponseBody
    public String upload(MultipartHttpServletRequest request){
        String flag = AppConstants.ADD_FAIL;
        long maxfileupload = 1024*1024*60;
        String suffix[] = new String[]{ "xls","xlsx"};
        List<MultipartFile> files = request.getFiles("uploadfile");
        List<BFestivalConfig> list = new ArrayList<BFestivalConfig>();
        if(files != null){
            list = beginUpload(request,maxfileupload,suffix,"uploadfile");
        }
        if(list != null && list.size() > 0){
            try {//确定导入的年份为同一年
                String year1 = list.get(0).getConfigDate().substring(0, 4);
                for (BFestivalConfig config : list) {
                    String year = config.getConfigDate().substring(0, 4);
                    if(!(year1.equals(year))){
                        flag = "diffrent_year";
                        return flag;
                    }
                }
                HQLEntityString hes = new HQLEntityString(BFestivalConfig.class.getName());
                hes.setCustomHql(" configDate like '%"+year1+"%' ");
                List<BFestivalConfig> configList = configService.getQueryFestivalConfig(hes);
                if(configList != null && configList.size() > 0){//防止重复导入,如果存在导入,则先删除
                    configService.deleteFestival(year1);
                }
            } catch (Exception e) {
                flag = "error_year";//防止年份输入为空或者格式不正确
                //System.err.println("日期栏有空值或者格式不正确!");
                e.printStackTrace();
                return flag;
            }
            flag = configService.batchInsert(list);//批量插入
        }
        return flag;
    }

    private List<BFestivalConfig> beginUpload(MultipartHttpServletRequest request,
            long maxfileupload, String[] suffix, String param) {
            //1.获取
            String serverPath = PropertyManager.getString("upload_file_path");//获取配置中存放在磁盘的路径
            if(StringUtils.isEmpty(serverPath)){
                serverPath = request.getSession().getServletContext().getRealPath("");
            }
            File uploadPath = null;
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");//目录地址按照日期
            String date = sdf.format(System.currentTimeMillis());
            String s = serverPath + File.separatorChar;
            uploadPath = new File(s + date + File.separator);//上传文件目录
            if(!uploadPath.exists()){
                uploadPath.mkdirs();
            }
            System.out.println("uploadPath:"+uploadPath);
            
            List<BFestivalConfig> list = new ArrayList<BFestivalConfig>();
            try {
                List<MultipartFile> files = request.getFiles(param);
                for (MultipartFile multipartFile : files) {
                    //2.存到磁盘
                    CommonsMultipartFile fileMetaData = (CommonsMultipartFile) multipartFile;
                    String realName = fileMetaData.getOriginalFilename();//excel表的名字
                    if(realName == null || StringUtils.isEmpty(realName)){
                        return null;
                    }
                    String filesuffix = realName.substring(realName.lastIndexOf(".") + 1);//获取文件后缀xlsx
                    boolean isValid = false;//判断文件支持的类型是否合法
                    for(int i = 0; i < suffix.length; i++){
                        if(filesuffix.trim().equalsIgnoreCase(suffix[i])){
                            isValid = true;
                        }
                    }
                    if(!isValid){
                        throw new Exception("不合法的文件类型!");
                    }
                    String newSuffix = filesuffix.trim().toLowerCase();
                    realName = System.currentTimeMillis() + "." + newSuffix;
                    File saveFile = new File(uploadPath, realName);
                    fileMetaData.getFileItem().write(saveFile);
                    //3.存到数据库
                    String absolutePath = saveFile.getAbsolutePath();
                    System.out.println("absolutePath:"+absolutePath);
                    FileInputStream fis = new FileInputStream(absolutePath);
                    Workbook workbook = WorkbookFactory.create(fis);
                    Sheet sheet;
                    sheet = workbook.getSheetAt(0);
                    int rowNum = sheet.getLastRowNum();
                    Row row1 = sheet.getRow(1);
                    if(row1 == null){
                        throw new Exception("错误:无效Excel,没有列名!");
                    }
                    
                    for(int rowIndex = 1;rowIndex <= rowNum; rowIndex++){
                        BFestivalConfig config = new BFestivalConfig();
                        Row row = sheet.getRow(rowIndex);
                        if(row == null){
                            return null;
                        }
                        /*if(!("".equals(row.getCell(1).getStringCellValue()))){
                            
                        }*/
                        config.setConfigDate(row.getCell(0).getStringCellValue());
                        config.setIsWork(row.getCell(1).getStringCellValue());
                        config.setRemark(row.getCell(2).getStringCellValue());
                        //System.err.println(row.getCell(0).getStringCellValue());
                        list.add(config);
                    }
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        return list;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值