excle模板导入,和导出

一般导入一个excle需要先规定一张导入模板

   /**
     *
     */
    /**
     *下载导入模板
     * @param request
     * @param response
     */
    @RequestMapping(value = "/exportTemlate", method = RequestMethod.GET)
    @ResponseBody
    private  void exportTemlate(HttpServletRequest request, HttpServletResponse response){
        String filePath = SldaController.class.getClassLoader().getResource("templates/ck_temlate.xls").getPath();	//ck_temlate.xls,该文件即将一个空表,改成该名字,放到对应路径下
        String[] handers={"仓库名称","xxx","xxx","xxx"};	//可以有多个值
        List<String[]> downData=new ArrayList<>();
        String []第一个数组={"xx","xxx","xxxx"};
        ...
        
		downData.add(第一个);
        downData.add(第二个);
        downData.add(第三个);
        downData.add(第四个);

        String[] downRows={};//这里可以指定导入的字段限定的值的对应位置{"2","5","6","7"}
        ExcelUtils.createExcelTemplate(filePath,handers,downData,downRows);
        ExcelUtils.getExcel(filePath,"仓库档案导入模板",response,request);
    }
	//常量
	private final static String XLS = "xls";
    private final static String XLSX = "xlsx";

/**
     * 导入
     * @param file
     * @return
     */
    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
    @ResponseBody
    public JSONObject importExcel(@RequestPart(value = "file", required = false) MultipartFile file) {
        int count = 0;
        // 1、用HSSFWorkbook打开或者创建“Excel文件对象”
        // 2、用HSSFWorkbook对象返回或者创建Sheet对象
        // 3、用Sheet对象返回行对象,用行对象得到Cell对象
        // 4、对Cell对象读写。
        // 获得文件名
        try {
            Workbook workbook = null;
            if (file == null) {
                return JSONResultUtil.getJSONResult(CommonConstants.fail, ErrCode.PARAMETER_EMPTY.getCode(),
                        ErrCode.PARAMETER_EMPTY.getMessage(), null);
            }

            String fileName = file.getOriginalFilename();
            if (fileName.endsWith(XLS)) {
                // 2003
                workbook = new HSSFWorkbook(file.getInputStream());
            } else if (fileName.endsWith(XLSX)) {
                // 2007
                workbook = new XSSFWorkbook(file.getInputStream());
            } else {
                return JSONResultUtil.getJSONResult(CommonConstants.fail, "", "文件不是Excel文件", null);
            }
            Sheet sheet = workbook.getSheetAt(0);
            if (sheet == null) {
                return JSONResultUtil.getJSONResult(CommonConstants.fail, "", "请导入模板", null);
            }
            int rows = sheet.getLastRowNum();// 指的行数,一共有多少行+
            if (rows == 0) {
                return JSONResultUtil.getJSONResult(CommonConstants.fail, "", "无数据", null);
            }
            // 判断是否是模板,不是打回
            Iterator<Cell> cells = sheet.getRow(0).cellIterator();
            StringBuilder str = new StringBuilder();
            while (cells.hasNext()) {
                str.append(CellUtils.getDataValue(cells.next()));
            }
            String[] th = {"仓库名称","xxx","xxx"};
            for (String s : th) {
                if (!str.toString().contains(s)) {
                    return JSONResultUtil.getJSONResult(CommonConstants.fail, "", "请导入模板", null);
                }
            }

            for (int i = 1; i <= rows + 1; i++) {
                // 读取左上端单元格
                Row row = sheet.getRow(i);
                // 行不为空
                if (row != null) {
                    // **读取cell**
                    Warehouse warehouse = new Warehouse();
                    // 仓库名称
                    String name = CellUtils.getCellValue(row.getCell(0));
                    if (StringUtils.isBlank(name)) {
                        return JSONResultUtil.getJSONResult(CommonConstants.fail, "", "第" + (i + 1) + "行第1列  塘口名称  为空",
                                null);
                    }
                    //判断仓库名称是否重复
                    Warehouse z = warehouseService.findcankagain(name);
                    if(z!=null){
                        return JSONResultUtil.getJSONResult(CommonConstants.fail, "", "第" + (i + 1) + "行第1列  塘口名称  已存在",
                                null);
                    }
                    warehouse.setCkname(name);

                    warehouse.setId(UuidGenerator.generate32UUID());
                    count = warehouseService.save(warehouse);
                    if (count == 0) {
                        return JSONResultUtil.getJSONResult(CommonConstants.fail, ErrCode.OPERATE_FAIL.getCode(),
                                ErrCode.OPERATE_FAIL.getMessage(), null);
                    }
                }
            }
            return JSONResultUtil.getJSONResult(null);
        } catch (Exception e) {
            e.printStackTrace();
            return JSONResultUtil.getJSONResult(CommonConstants.fail, ErrCode.SYSTEM_ERROR.getCode(),
                    ErrCode.SYSTEM_ERROR.getMessage(), null);
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值