java导入Excel

 

前台:

 1   <form id = "import_form">
 2         <input id="import_file_name" name="" value="" type="text"/>
 3         <input id="import_file" onchange="showFileName()" name="file" value="" type="file"/>
 4         <input type="button" id = "import_box_sure" value="确定"/>
 5     </form>
 6     
 7     <script>
 8         function showFileName(){
 9             $("#import_file_name").val($("#import_file").val());
10         }
11         
12         $(function(){
13             
14             $('#import_box_sure').live('click', function() {
15                if(!$("import_file").val()){
16                    alert("请导入文件");
17                    return;
18                }
19               });
20             
21             $("#import_form").ajaxSubmit({
22                 type:'post',
23                 url:"./importUsers",
24                 success:function(data){
25                     if(data && data.code=="200"){
26                         alert("导入成功");
27                         //弹窗隐藏
28                     }
29                 }
30             });
31             
32         }
33         
34     </script>

 

后台:

 1 @RequestMapping(value="/importUsers",method = RequestMethod.POST)
 2     @ResponseBody
 3     public Object importUsers(@RequestParam MultipartFile file){
 4         excelToUserList(is);
 5     }
 6     
 7     public static  List<User> excelToUserList(InputStream is){
 8         final ArrayList<User> resultList = new ArrayList<User>();
 9         XSSFWorkbook wb = new XSSWorkbook(is);
10         
11         XSSFSheet sheet = wb.getSheetAt(0);
12          
13         for(int currentRowNum=0;currentRowNum<sheet.getLastRowNum();currentRowNum++){
14             XSSFRow row = sheet.getRow(currentRowNum);
15             
16             if(null==row){
17                 //遇到真正空行就退出
18                 break;
19             }
20             //第一行是标题,第二行是表头,从第三行开始才是数据
21             if(currentRowNum<2){
22                 continue;
23             }
24             
25             Map<String,Object> resp = rowIsEmpty(row);
26             int code = (int)resp.get("code");
27             //等于1说明当前行中没有有效数据,也认为是空行
28             if (code==1) {
29                 break;
30             }
31             
32             //这里才开始真正遍历每行的单元格数据todo,方法参考 rowIsEmpty方法
33             
34         }
35             
36         
37         
38     }
39     
40     
41     
42     
43     //判断当前行中是否有有效数据。当前行中每一个单元格中都没有有效数据(如空串""),则认为当前行没有数据
44     private static Map<String,Object> rowIsEmpty(XSSFRow row){
45         HashMap<String, Object> map = new HashMap<String,Object>();
46         int cellNum = row.getLastCellNum();
47         for(int j=0;j<cellNum;j++){
48             XSSCell cell = row.getCell(j);
49             if(cell==null || "".equals(cell.getStringCellValue())){
50                 continue;
51             }else{
52                 //只要有一个单元格不满足,则此行不为空
53                 map.put("code", 0);
54                 return map;
55             }
56         }
57         //当前行全部单元格都没有有效数据
58         map.put("code", 1);
59         return map;
60     }
61 }

 

posted @ 2018-03-19 14:02  戈博折刀  阅读(148)  评论(0编辑  收藏  举报