poi导入excel

来源:互联网 发布:java web基础知识书籍 编辑:程序博客网 时间:2024/06/04 20:07
页面:
<href="###" class="btn1 btn-search" id="upLoadButton" onclick="importFile()"><span><em>导入</em></span></a>
js:
//导入
function importFile() {
    var fileName $('#fileName').val();
    if (fileName != '') {
        $.ajax({
            type:'post',
            url:basePath 'xxx/importFile/' fileName,
            data:fileName,
            dataType:'json',
            contentType:'application/json; charset=UTF-8',
            cache false,
            beforeSendfunction () {
                $.messager.progress({
                    title'提示',
                    msg'Excel导入中,请稍候……',
                    text''
                });
            },
            completefunction () {
                $.messager.progress('close');
            },
            success:function(result){
                _$.alert(null, result.infonullfunction () {
                    if (result.msg != '') {
                        _$.alert(null"导入数据有错误,点击确定下载错误数据"nullfunction () {
                            window.location.href '<%=path%>/downloader?filename=' + result.msg '&ExportOrDownLoad=Export';
                        });
                    }
                });
            }
        });
    } else {
        jQuery.messager.alert('提示:''请先上传文件!''error');
    }
}//end 导入


后台:
@POST
@Path("/importFile/{fileName}")
public EasyUIResult importFile(@PathParam("fileName"final String fileName) {
    log.info("------时间----------" new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));

    EasyUIResult result = null;
    if (org.apache.commons.lang3.StringUtils.isEmpty(fileName)) {
        result = EasyUIUtils.getEasyUIResult(-1false);
        result.setMsg("文件名不能为空");
        return result;
    }
    try {
        ImportFileReturnInfo importResult = this.teService.importFile(fileName);
        result = EasyUIUtils.getEasyUIResult(1true);
        result.setMsg(importResult.getErrFileName());
        result.setInfo(importResult.getAlertMsg());
        return result;
    } catch (Exception ex) {
        log.error(ex.toString(), ex);
        result = EasyUIUtils.getEasyUIResult(-1false);
        result.setMsg("系统异常");
        return result;
    }
}//end 导入

//region 导入
private String alertMsg;
@Override
public ImportFileReturnInfo importFile(String fileName) {
   String errFileName = "";

   final String path = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest().getServletContext().getRealPath("");
   List<TimeEffectImport> errList = this.upLoadFileBiz(path + filePath, fileName.replace("\n"""));
   if (errList != null && errList.size() > 0) {
      errFileName = createErrorExcel(path + filePath, errList);
   }

   ImportFileReturnInfo result = new ImportFileReturnInfo();
   result.setErrFileName(errFileName);
   result.setAlertMsg(this.alertMsg);

   return result;
}

//导入时效考核指标校验
public List<TimeEffectImport> upLoadFileBiz(String path, String fileName) {
   int sqlcount = 0;
   List<TimeEffectImport> errorList = new ArrayList<>();
   try {
      //读取Excel的数据
      List<String> listTitle = new ArrayList<>();
      List<TimeEffectImport> listData = ExcelImportUtil.GetDataFromExcel(TimeEffectImport.class, path + fileName,
            new String[]{"excel_header1","excel_header2"}, listTitle);

      //标题长度验证不正确
      if (listData == null || listTitle.size() != 22) {
         this.alertMsg "上传Excel文件数据类型不正确或列数量不匹配";
         return null;
      }
      errorList = checkData(listData,errorList);
      if(errorList.size()>0){
         this.alertMsg "本次上传" + listData.size() + "条,数据校验失败" + errorList.size() + "条";
         return errorList;
      }else {
         Map<String,TimeEffectImport> list_noRepeatMap = Maps.newHashMap();
         for (TimeEffectImport uploadPo : listData) {
            String wmscode = uploadPo.getWmscode().split("\\.")[0];
            String logisticcode = uploadPo.getLogisticcode().split("\\.")[0];
            String provicecode = uploadPo.getProvicecode().split("\\.")[0];
            String citycode = uploadPo.getCitycode().split("\\.")[0];
            String key = wmscode + logisticcode + provicecode + citycode;
            list_noRepeatMap.put(key,uploadPo);
         }
         List<TimeEffectImport> sqlList = Lists.newArrayList();
         for(Entry<String,TimeEffectImport> entry:list_noRepeatMap.entrySet()){
            sqlList.add(entry.getValue());
         }
         sqlcount = sqlList.size();
         List<TimeEffectVO> list_insert = Lists.newArrayList();
         for (TimeEffectImport uploadPo : sqlList) {
            Map<String, Object> param = new HashMap<>();
            param.put("wmscode",uploadPo.getWmscode().split("\\.")[0]);
            param.put("logisticcode",uploadPo.getLogisticcode().split("\\.")[0]);
            param.put("provicecode",uploadPo.getProvicecode().split("\\.")[0]);
            param.put("citycode",uploadPo.getCitycode().split("\\.")[0]);
           timeEffectDao.deleteBy4code(param);//不管是导入新增还是导入修改,全部新增先删除
            TimeEffectVO timeEffectVO_add = new TimeEffectVO();
            timeEffectVO_add.setCreatetime(new Date());
            list_insert.add(timeEffectVO_add);
         }//end for循环
         timeEffectDao.insertList(list_insert);
      }//end else 全部通过校验
      this.alertMsg "本次上传" + listData.size() + "条,去掉仓库,快递,省,市重复后成功导入" + sqlcount + "条,数据校验失败" + errorList.size() + "条";
      return errorList;
   }catch (Exception ex){
      log.error(ex.getMessage(), ex);
      return null;
   }
}//end 导入方法


//导入时的错误数据导出到excel
public String createErrorExcel(String path, List<TimeEffectImport> errList) {
   ExcelExportInfo exportInfo = new ExcelExportInfo();
   exportInfo.setFilePath(path);
   exportInfo.setFileName("TimeEffectImportError_");
   exportInfo.setTitles(new String[]{"excel_heaers_chinese","错误提示"});
   exportInfo.setTitleWidths(new int[]{30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30});
   exportInfo.setDataColumns(new String[]{"excel_headers","errorMsg"});
   exportInfo.setDataList(errList);
   String result = ExcelExportUtil.ExportError(exportInfo);
   return result;
}
原创粉丝点击