当前位置: 首页 > 工具软件 > Excel-Boot > 使用案例 >

boot 导入 excel

束研
2023-12-01

上代码

        <dependency>
            <groupId>io.github.magic-core</groupId>
            <artifactId>excel-boot</artifactId>
            <version>2.0</version>
        </dependency>
//判断格式
        String originalFilename = multipartFile.getOriginalFilename();
        String suffix = originalFilename.substring(originalFilename.lastIndexOf("."));
        if (Objects.isNull(suffix) || (!suffix.equals("xlsx") && suffix.equals("XLSX"))) {
            return Result.createByErrorMessage("仅支持xlsx格式的文件");
        }
        List<ErrorEntity> list = new ArrayList<>();
        try {
            ExcelBoot.ImportBuilder(multipartFile.getInputStream(), InsertUserVO.class)
                    .importExcel(new ImportFunction<InsertUserVO>() {
                        /**
                         * @param sheetIndex 当前执行的Sheet的索引, 从1开始
                         * @param rowIndex 当前执行的行数, 从1开始
                         * @param userEntity Excel行数据的实体
                         */
                        @Override
                        public void onProcess(int sheetIndex, int rowIndex, InsertUserVO userEntity) {
                            //将读取到Excel中每一行的userEntity数据进行自定义处理
                            //如果该行数据发生问题,将不会走本方法,而会走onError方法
                            GoodsUser goodsUser = GoodsUser.builder().guName(userEntity.getUserName()).guPhone(userEntity.getUserPhone())
                                    .guAddress(userEntity.getAddress()).createBy(unsign.getUserId()+"").build();
                            int i = goodsUserMapper.insert(goodsUser);
                        }

                        // errorEntity 错误信息实体
                        @Override
                        public void onError(ErrorEntity errorEntity) {
                            list.add(errorEntity);
                        }
                    });
        } catch (ExcelBootException excelBootException) {
            log.error("错误:", excelBootException);
            //手动回滚
            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
            return Result.createByErrorMessage("导入失败,请选择对应的Excel");
        }
        if(list.size()!=0){
            //手动回滚
            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
            return Result.createByErrorData(list);
        }
        return Result.createBySuccessMessage("成功");

ok了 代码中报错的那些 是我项目中自己定义的实体类和mapper
这个方法也是在网上找的,时间有点长忘了博主是谁,勿怪勿怪

 类似资料: