使用poi实现Excel导入功能,数据库基于oracle(上)
2017-06-19 23:58
696 查看
首先说下采用poi实现导入Excel的实现思路(如果有更好的思路,欢迎跟我探讨。)
1、首先是JSP的编写:
这里没有提供一个模板的下载功能,实在是没时间去弄,有实现的可以给我借鉴一下。注意
2、其次是service实现
3、Controller的实现:
这个value里面的 值主要对应了前台ajax的url,主要看你项目路径是如何配置了。@RequestParam(“myfile”) MultipartFile myFile中的“myfile”,对应你JSP的form里面的name=”myfile” 。
暂时先写到这里,还有导入的具体实现类ReadExcel.java以及基于Oracle的导入数据的插入实现等有时间了,再一并写给大家,当然如果大家有兴趣也可以留言给我,我会尽快回复大家。
1、首先是JSP的编写:
<div class="span55" style="width:330px; height:250px; overflow:scroll;"> <form:form enctype="multipart/form-data" id="batchUpload" method="post" action="${ctx}/npbi/outUrmHead/importExcel" class="form-horizontal"> <button class="btn btn-success btn-xs" id="uploadEventBtn" style="height:26px;" type="button">选择文件</button> <input type="file" name="myfile" style="width:0px;height:0px;" id="uploadEventFile"> <input style="border:1px solid #e6e6e6;width:200px;height:26px;" id="uploadEventPath" disabled="disabled" type="text" placeholder="请选择Excel表"> </form:form> <button type="button" class="btn btn-success btn-sm" onclick="outUrmList.uploadBtn();">上传</button> </div> <script type="text/javascript"> var OutUrmList = function(){ this.init = function(){ //模拟上传Excel $("#uploadEventBtn").unbind("click").bind("click",function(){ $("#uploadEventFile").click(); }); $("#uploadEventFile").bind("change",function(){ $("#uploadEventPath").attr("value",$("#uploadEventFile").val()); }) }; //点击上传按钮 this.uploadBtn = function(){ var uploadEventFile = $("#uploadEventFile").val(); if(uploadEventFile==""){ alert("请选择Excel文件,再上传!"); }else if(uploadEventFile.lastIndexOf(".xls")<0 && uploadEventFile.lastIndexOf(".xlsx")<0){//可判断以.xls和.xlsx结尾的Excel alert("只能上传Excel文件!"); } else{ var Mid = $("#Mid").val(); var biaoshi = $("#biaoshi").val(); var url =ctx+"/npbi/outUrmHead/importExcel?Mid="+Mid+"&biaoshi="+biaoshi; var formData = new FormData($('#batchUpload')[0]); outUrmList.sendAjaxRequest(url,'POST',formData); } }; this.sendAjaxRequest = function(url,type,data){ $.ajax({ url:url, type:type, data:data, success:function(result){ alert(result+"("+"提示:如系统异常关闭或页面刷新,请重新上传和申报!"+")"); }, error:function(){ alert("上传失败!"); }, cache:false, contentType : false, processData:false, }); }; } var outUrmList; $(function(){ outUrmList = new OutUrmList(); outUrmList.init(); }); </script>`
这里没有提供一个模板的下载功能,实在是没时间去弄,有实现的可以给我借鉴一下。注意
<input type="file" name="myfile" ...这个地方的type要是file。切记form的类型要是:enctype="multipart/form-data"。
2、其次是service实现
String result = ""; String ieMode = ""; boolean flag = true; boolean flags = true; Map<String,Object> paramMap = new HashMap<String, Object>(); paramMap.put("ieMode", ieMode); StringBuffer sb = new StringBuffer(); //创建处理EXCEL的类 ReadExcel readExcel = new ReadExcel(); //解析excel,获取上传的事件单 List<OutUrmList> urmList = readExcel.getExcelInfo(myFile,Mid); if(urmList!=null&&!urmList.isEmpty()){ //判断Excel导入的编号是否已经存在于数据库中 for(int i=0;i<urmList.size();i++){ paramMap.put("billNoVal", urmList.get(i).getFormNo()); paramMap.put("Mid", Mid); String billNo = outUrmListService.getbillNoDuplicationCheck(paramMap); if(StringUtils.isNotEmpty(billNo)){ sb.append(billNo+","); flags = false; } } //判断Excel导入的编号号是否之间是否存在相同 for(int j=0;j<urmList.size()-1;j++){ for(int r=j+1;r<urmList.size();r++){ if((urmList.get(j).getFormNo()).equals(urmList.get(r).getFormNo())){ flag = false; } } } if(flag && flags){ outUrmListService.saveExcelInfo(urmList); result="上传成功!"; }else if(!flag){ result="Excel文件中编号重复,请核实后再上传!!"; }else if(!flags){ result="已存在编号:"+"("+sb+")"+"请核实后再上传!"; } }else{ result="上传失败!"; } return result; }``` 这里对插入的Excel内容到数据库已经存在的唯一性校验实现。
3、Controller的实现:
@RequestMapping(value = "importExcel", method = RequestMethod.POST) @ResponseBody public void importExcel(HttpServletRequest request, HttpServletResponse response,Model model, @RequestParam("myfile") MultipartFile myFile) throws ParseException, IOException { System.out.println("=========================>进来"); String result =outUrmHeadService.readExcelFile(myFile); response.getWriter().print(result); }```
这个value里面的 值主要对应了前台ajax的url,主要看你项目路径是如何配置了。@RequestParam(“myfile”) MultipartFile myFile中的“myfile”,对应你JSP的form里面的name=”myfile” 。
暂时先写到这里,还有导入的具体实现类ReadExcel.java以及基于Oracle的导入数据的插入实现等有时间了,再一并写给大家,当然如果大家有兴趣也可以留言给我,我会尽快回复大家。
相关文章推荐
- 使用poi实现Excel导入功能,数据库基于oracle(下)
- Java-Maven-POI 简单导入导出Excel通用工具,默认使用基于poi实现
- SSM框架,使用POI技术实现简单Excel表导入数据库
- 在 Laravel 中使用 Laravel Searchy 扩展包实现基于数据库的轻量级搜索功能
- java中使用poi实现导入Excel
- java Excel导入导出,基于XML的实现,easy-excel使用
- 使用phpexcel类实现excel导入mysql数据库功能(实例代码)
- 在 Laravel 5 中使用 Laravel Excel 实现 Excel/CSV 文件导入导出功能
- JAVA实现数据库数据导入/导出到Excel(POI)
- 使用poi导入excel文件数据到数据库
- Oracle 使用TOAD实现导入导出Excel数据
- 使用POI实现在java程序中导入导出Excel文件数据
- Java中Excel导入功能实现、excel导入公共方法_POI -
- Oracle 使用TOAD实现导入导出Excel数据
- java中使用poi实现导入Excel
- 在Yii框架中使用PHPExcel扩展从数据库导出excel文件功能的实现
- 使用sqluldr2实现将Oracle数据无落地快速导入Greenplum数据库
- Java中Excel导入功能实现、excel导入公共方法_POI -
- 使用phpexcel类实现excel导入mysql数据库功能(实例代码)
- Java 使用poi把数据库中数据导入Excel的解决方法