SpringBoot Excel表导入【POI的使用demo 简单 易懂】

前言:

最近在做迁移数据的工作,旧系统使用的省市区编码 和新系统使用的新版的有差异 需要将旧的转换新的 ,我这边想到的思路是 吧旧的和新的对应关系放到Map集合中 来进行操作 旧的为K新的为V 如果在库中查出来旧的在map中存在 就返回V 如果不存在就返回本身,但是发生冲突的省市区很多 不能一个一个的add到map中 于是想到了个 把对应的关系放到Excel表格中 使用poi 读取 再放到map中

废话不多说 上代码

第一步引入依赖:
在这里插入图片描述

在这里插入代码片
```		<dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>RELEASE</version>
        </dependency>

第二步 书写代码

    public String updateCountCodePoi(String codeAndName)  {

        //存放冲突的map
        Map<String, String> codeMap = new HashMap<>();

        // 流读取文件
        FileInputStream is = null;
        try {
            is = new FileInputStream(new File("d:\\aaa.xlsx"));
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        // 根据流创建文件
        Workbook wb = null;
        try {
            wb = new XSSFWorkbook(is);
        } catch (IOException e) {
            e.printStackTrace();
        }

        Sheet sheet = wb.getSheetAt(0);//获取第一张表
        for (int i = 0; i <= sheet.getLastRowNum(); i++) {
            Row row = sheet.getRow(i);//获取索引为i的行,以0开始
            String key = row.getCell(0).getStringCellValue();//获取第i行的索引为0的单元格数据
            String value = row.getCell(1).getStringCellValue();//获取第i行的索引为0的单元格数据
            System.out.println("测试传来的值"+key + value);
            codeMap.put(key,value);
        }

        try {
            wb.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

        //String codeAndName = "130182河北省,石家庄市,藁城市";  //假设传来的参数
        String codeName = null;                               //假设返回的值
        //遍历map
        for (String key : codeMap.keySet()) {
            System.out.println("K== " + key + "V== " + codeMap.get(key));

            //校验传来的key是否存在map中
            if (codeAndName.equals(key)) {
                codeName = codeMap.get(codeAndName);
                return codeName;
            } else {
                codeName = codeAndName;
            }
        }
        System.out.println("测试返回值"+codeName);
        return codeName;

    }

第三步 查看Excel表格内容:

在这里插入图片描述

简单使用poi导入 可以只复制部分代码

如有大神发现bug 可以指点 一二
博客只为记录学习使用

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
在 Spring Boot 中,可以使用 Apache POI 库来实现 Excel 导入和导出。以下是一个示例: 1. 导入 Excel ```java @PostMapping("/import") public String importExcel(@RequestParam("file") MultipartFile file) throws IOException { Workbook workbook = WorkbookFactory.create(file.getInputStream()); Sheet sheet = workbook.getSheetAt(0); for (Row row : sheet) { String col1 = row.getCell(0).getStringCellValue(); double col2 = row.getCell(1).getNumericCellValue(); // TODO: 处理数据 } return "导入成功"; } ``` 在上述代码中,我们通过 @PostMapping 注解将一个上传文件的接口映射到 /import 路径上,通过使用 MultipartFile 类型的参数来获取上传的文件。然后,使用 WorkbookFactory 类的 create() 方法来创建 Workbook 对象,使用 getSheetAt() 方法获取 Sheet 对象,使用 for 循环遍历每一行,通过 getCell() 方法获取单元格对象,通过 getStringCellValue() 或者 getNumericCellValue() 方法获取单元格的值,最后处理数据即可。 2. 导出 Excel ```java @GetMapping("/export") public void exportExcel(HttpServletResponse response) throws IOException { Workbook workbook = new XSSFWorkbook(); Sheet sheet = workbook.createSheet("Sheet1"); Row headerRow = sheet.createRow(0); headerRow.createCell(0).setCellValue("列1"); headerRow.createCell(1).setCellValue("列2"); Row dataRow1 = sheet.createRow(1); dataRow1.createCell(0).setCellValue("数据1"); dataRow1.createCell(1).setCellValue(123); Row dataRow2 = sheet.createRow(2); dataRow2.createCell(0).setCellValue("数据2"); dataRow2.createCell(1).setCellValue(456); response.setContentType("application/vnd.ms-excel"); response.setHeader("Content-disposition", "attachment;filename=test.xlsx"); workbook.write(response.getOutputStream()); } ``` 在上述代码中,我们通过 @GetMapping 注解将一个导出 Excel 的接口映射到 /export 路径上,创建 Workbook 和 Sheet 对象,使用 createRow() 和 createCell() 方法创建行和单元格,使用 setCellValue() 方法设置单元格的值,最后将数据写入 HttpServletResponse 的输出流中即可。需要注意的是,需要设置 response 的 Content-Type 和 Content-disposition 属性来告诉浏览器下载的文件类型和文件名。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值