SpringMVC接收上传的Excel并解析获取内容(兼容2003和2007)

系统中常用到的批量导入功能,根据Excel内容批量插入,这里实现获取上传的Excel内容,由于offer2003前和2007后的版本所使用的API不一样,这里也做了兼容处理

1.引入maven包


        
            org.apache.poi
            poi
            3.16
        
        
            org.apache.poi
            poi-ooxml
            3.16
        
        
            org.apache.poi
            poi-ooxml-schemas
            3.16
        

2.导入的Excel模板示例

SpringMVC接收上传的Excel并解析获取内容(兼容2003和2007)_第1张图片

 

2.Controller-接收上传的文件和解析获取内容--

@RequestMapping(value = "/import", method = RequestMethod.POST)
    public String importLogisticsCcode(@RequestParam("fileName") MultipartFile file) throws Exception {
        // 获取文件名
        String fileName = file.getOriginalFilename();
        if (StringUtils.isEmpty(fileName)){
            return "文件不能为空";
        }
        // 获取文件后缀
        String prefix=fileName.substring(fileName.lastIndexOf("."));
        if (!prefix.toLowerCase().contains("xls") && !prefix.toLowerCase().contains("xlsx") ){
            return "文件格式异常,请上传Excel文件格式";
        }
        // 防止生成的临时文件重复-建议使用UUID
        final File excelFile = File.createTempFile(System.currentTimeMillis()+"", prefix);
        file.transferTo(excelFile);

        //由于2003和2007的版本所使用的接口不一样,所以这里统一用Workbook做兼容
        boolean isExcel2003 = prefix.toLowerCase().endsWith("xls")?true:false;
        Workbook workbook = null;
        if(isExcel2003){
            workbook = new HSSFWorkbook(new FileInputStream(excelFile));
        }else{
            workbook = new XSSFWorkbook(new FileInputStream(excelFile));
        }
        //Excel表中的内容
        List> list = new ArrayList<>();
        Sheet sheet = workbook.getSheetAt(0);
        //这里重1开始,跳过了标题,直接从第二行开始解析
        for(int i=1; i map = new HashMap<>();
            map.put("orderCode",orderCode);
            map.put("logisticsCompanyCode",logisticsCompanyCode);
            map.put("logisticsCode",logisticsCode);
            list.add(map);
        }
        //删除临时转换的文件
        if (excelFile.exists()) {
            excelFile.delete();
        }
        //list就是具体内容,剩下的就是自己处理具体业务了
        System.out.println("上传的内容就是这个了:" + list);
        
    }

 

你可能感兴趣的:(POI,Java,Java工具类)