sprintboot的excel文件导入

现象:
springBoot项目导入excel文件

方法:
1:引入jar
在这里插入图片描述

2:MultipartFile excelFile 对象接收excel文件导入
excelFile 常用方法:
String getContentType()//获取文件MIME类型
InputStream getInputStream()//后去文件流
String getName() //获取表单中文件组件的名字
String getOriginalFilename() //获取上传文件的原名
long getSize() //获取文件的字节大小,单位byte
boolean isEmpty() //是否为空
void transferTo(File dest) //保存到一个目标文件中。
在这里插入图片描述
3:校验文件
在这里插入图片描述

public String importSettleExcel(MultipartFile excelFile, @RequestHeader("token") String token,String bookId){
        if(StringUtils.isBlank(bookId)){
            throw new ServiceException(ErrorCodeEnum.ERRPR_INPUT) ;
        }
        JSONObject jsonObject = checkImport(excelFile);
        try {
            StringBuilder message = new StringBuilder();
            InputStream is = excelFile.getInputStream();
            List<receiptSettleModel> bankSeqSettlelist = ExcelUtils.getInstance().readExcel2Objects(is, receiptSettleModel.class, 0, 50000, 0);
            int i = 2 ;
            for (receiptSettleModel bankSeqModel : bankSeqSettlelist){
                log.debug(bankSeqModel.toString());
                try {
                    this.receiptBookService.importSettleExcel(bookId,bankSeqModel,token);
                } catch (ServiceException se){
                    log.error("导入失败数据:",se);
                    message.append("第").append(i).append("行导入失败:").append(se.getMessage());
                }
                i++;
            }
            if (message.length()>0){
                jsonObject.put("code", SysContants.REST_RTN_CODE_FAIL) ;
                jsonObject.put("message", message.toString());
            }
        } catch (Exception e) {
            e.printStackTrace();
            jsonObject.put("code", SysContants.REST_RTN_CODE_FAIL) ;
            jsonObject.put("message", "导入失败");
        }
        return jsonObject.toJSONString();
    }


public JSONObject checkImport(MultipartFile excelFile) {
        if (excelFile==null){
            throw new HttpReqException(ErrorCodeEnum.ERRPR_INPUT);
        }
        String filename = excelFile.getOriginalFilename() ;
        if (filename==null){
            throw new HttpReqException(ErrorCodeEnum.ERRPR_INPUT);
        }
        String postfix = filename.substring(filename.lastIndexOf(".")).toLowerCase();
        if((!".xls".equals(postfix) && !".xlsx".equals(postfix)) || excelFile.getSize()>1024*1024*50){
            throw new HttpReqException(ErrorCodeEnum.ERROR_FILE);
        }
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("code", SysContants.REST_RTN_CODE_SUCCESS) ;
        jsonObject.put("message", "导入成功");
        return jsonObject;
    }
在 Spring Boot 中,你可以使用 Apache POI 库来实现 Excel 文件的读取和导入数据。以下是一个简单的示例: 1. 添加 Maven 依赖 ```xml <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.1.2</version> </dependency> ``` 2. 创建 Excel 文件模板 首先,你需要创建一个 Excel 文件模板,其中包含要导入的数据的列。 3. 创建 POJO 类 你需要创建一个 POJO 类来表示要导入的数据。该类的属性应该与 Excel 文件中的列相对应。 4. 编写读取 Excel 文件的代码 ```java @Service public class ExcelService { public List<YourPOJO> readExcel(MultipartFile file) throws IOException, InvalidFormatException { Workbook workbook = WorkbookFactory.create(file.getInputStream()); Sheet sheet = workbook.getSheetAt(0); List<YourPOJO> list = new ArrayList<>(); for (int i = 1; i <= sheet.getLastRowNum(); i++) { Row row = sheet.getRow(i); YourPOJO pojo = new YourPOJO(); pojo.setProp1(row.getCell(0).getStringCellValue()); pojo.setProp2(row.getCell(1).getStringCellValue()); // ... list.add(pojo); } return list; } } ``` 5. 编写控制器代码 ```java @RestController public class YourController { @Autowired private ExcelService excelService; @PostMapping("/import-excel") public ResponseEntity<Void> importExcel(@RequestParam("file") MultipartFile file) throws IOException, InvalidFormatException { List<YourPOJO> list = excelService.readExcel(file); // 处理导入的数据 return ResponseEntity.ok().build(); } } ``` 这样,当你上传 Excel 文件时,它将被读取并转换为一个包含 YourPOJO 对象的列表,你可以使用它们来执行进一步的操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值