文件导入案例

注意:文件导入用到Post请求方式
例:

@PostMapping("/admin/csv/export")
    @ApiOperation("后台批量导入商品分仓库存数据")
    public Result adminExport(@RequestParam MultipartFile file,
                              @RequestParam String organizationId,
                              @ApiIgnore Operator operator) {
        String userId = operator != null ? operator.getUserId() : null;
        logger.debug("开始批量导入分仓库存数据userId:{}", userId);
        String exceptionMessage = handleFile(file);
        if (!Objects.isNull(exceptionMessage)) {
            return Result.errorOf(exceptionMessage);
        }
        try {
            //创建csv对象
            CsvReader csvReader = new CsvReader(file.getInputStream(), Charset.forName("GBK"));
            //读取表头
            csvReader.readHeaders();
            if (!"产品编码".equals(csvReader.getHeader(0)) || !"分仓".equals(csvReader.getHeader(1))
                    || !"库存".equals(csvReader.getHeader(2))) {
                return Result.errorOf("导入模板有误");
            }
            while (csvReader.readRecord()) {
                //产品编码
                String goodsId = csvReader.get(0);
                //分仓
                String compartment = csvReader.get(1);
                //库存
                Long stock = Long.parseLong(csvReader.get(2));

                GoodsCompartmentStockAddParam param = new GoodsCompartmentStockAddParam();
                param.setGoodsId(goodsId);
                param.setCompartment("0" + compartment);
                param.setStock(stock);
                param.setOrganizationId(organizationId);
                GoodsCompartmentStockData compartmentStockData = goodsCompartmentStockManager.get(goodsId, organizationId, param.getCompartment());
                //分仓库存数据更新
                if (compartmentStockData != null) {
                    goodsCompartmentStockManager.update(compartmentStockData.getId(), param.getGoodsId(),
                            param.getOrganizationId(), param.getStock(), param.getCompartment(), userId);
                } else {
                    //添加
                    goodsCompartmentStockManager.add(param, userId);
                }
            }
            csvReader.close();
            return Result.ok();
        } catch (Exception e) {
            logger.error("导入分仓数据失败userId:{}", userId);
            return Result.errorOf("读取csv文件异常");
        }
    }


private String handleFile(MultipartFile file) {
        final long limitFileSize = 1024 * 1024;
        if (file != null) {
            if (file.getSize() > limitFileSize) {
                return "导入的文件大小不能超过1M";
            } else if (!Objects.requireNonNull(file.getOriginalFilename()).contains(".csv")) {
                return "导入的文件仅支持csv格式";
            } else {
                return null;
            }
        } else {
            return "未上传文件";
        }
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用Java的POI库可以实现文件导入的通用实例。下面是一个简单的实现步骤: 1. 引入POI库:首先需要将POI库引入项目中的依赖中,可以通过在项目的构建文件中添加POI库的依赖,例如使用Maven可以在pom.xml文件中添加以下代码: ```xml <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.1.2</version> </dependency> ``` 2. 创建一个文件对象:使用Java的File类可以创建一个文件对象,来表示要导入文件。 ```java File file = new File("path/to/file.xlsx"); // 根据实际的文件路径进行修改 ``` 3. 创建一个工作簿对象:通过POI库创建一个工作簿对象,用于操作Excel文件。 ```java Workbook workbook = WorkbookFactory.create(file); ``` 4. 获取工作表对象:通过工作簿对象可以获取一个或多个工作表对象,用于操作Excel文件中的不同工作表。 ```java Sheet sheet = workbook.getSheetAt(0); // 获取第一个工作表 ``` 5. 遍历数据行:通过工作表对象可以获取一行一行的数据,然后遍历数据行进行处理。 ```java for (Row row : sheet) { // 处理每一行的数据 for (Cell cell : row) { // 处理每个单元格的数据 String value = cell.getStringCellValue(); // 获取单元格的值并进行处理 // 其他操作... } } ``` 6. 关闭工作簿对象:Excel文件导入操作完成后,需要关闭工作簿对象释放资源。 ```java workbook.close(); ``` 以上就是使用Java的POI库实现文件导入的通用实例。根据需要可以对文件路径、工作表、单元格等进行适当的修改和处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值