excel导入功能

    @RequestMapping("/importExcel")
    public void importExcel(HttpServletResponse response, HttpServletRequest request) {
        MessageResult message = new MessageResult();

        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
        MultipartFile multipartFile = multipartRequest.getFile("excelFile");

        List<Map<Object, Object>> list = new ArrayList<Map<Object, Object>>();
        Workbook rwb = null;
        Cell cell = null;
        try {
            rwb = Workbook.getWorkbook(multipartFile.getInputStream());

            // 获取文件的指定工作表 默认的第一个
            Sheet sheet = rwb.getSheet(0);
            // 行数(表头的目录不需要,从1开始)
            for (int i = 1; i < sheet.getRows(); i++) {
                // 列数
                Map<Object, Object> m = new HashMap<Object, Object>();
                for (int j = 0; j < sheet.getColumns(); j++) {
                    // 获取第i行,第j列的值
                    cell = sheet.getCell(j, i);
                    if (StringUtils.isBlank(cell.getContents())) {
                        throw new Exception("excel 第" + (i + 1) + "行 第" + (j + 1) + "列数据为空");
                    } else {
                        Device device = deviceService.selectByPrimaryKeySN(cell.getContents().trim());
                        if (device != null && device.getSn()!=null) {
                            throw new Exception("excel 第" + (i + 1) + "行 SN:"+cell.getContents()+"已存在");
                        }
                    }
                    m.put("m" + j, cell.getContents());
                    m.put("m1", NonceStringUtil.getUUID());
                }
                // 把刚获取的列存入list
                list.add(m);
            }
            String info = deviceService.insertDeviceSum(list);
            String[] infoArr = info.split(";");
            message.setCode(ConstantUtil.M_SUCCESS);
            message.setMessage("导入成功,共插入"+infoArr[0]+"条记录,其中成功"+infoArr[1]+"条");
            this.out(response, message);
        } catch (Exception e) {
            e.printStackTrace();
            message.setCode(ConstantUtil.M_SYSTEM_ERROR);
            message.setMessage(e.getMessage());
            this.out(response, message);

        }

    }

 

posted @ 2017-07-04 16:08  JLCUI  阅读(210)  评论(0编辑  收藏  举报