SpringBoot 使用EasyExcel,导入导出 excel

这里使用EasyExcel阿里巴巴开源的一个excel处理框架,EasyExcel是一个基于Java的简单、省内存的读写Excel的开源项目。

  • pom.xml导入依赖
    <!--  easyexcel-->
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>easyexcel</artifactId>
                <version>3.0.5</version>
            </dependency>
        </dependencies>
  • 创建实体类User,@ExcelProperty 注解是EasyExcel框架提供的注解之一,用于指定Excel中的列索引或列名。
  • 在Controller中使用 EasyExcel 做简单的导出​​​​​​​​​​​​​​​​​​​​​
//文件导出
    @GetMapping("/export")
    public void exportFile(HttpServletResponse response) throws IOException {
        // 获取用户数据
        List<User> users = userService.userSelect();

        // 指定内容类型为 Excel 文件(.xlsx 格式)
        response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8");

        // 对文件名进行 URL 编码
        String encodedFilename = URLEncoder.encode("用户信息.xlsx", "UTF-8");
        //attachment: 这个值指示浏览器将响应内容处理为文件下载
        response.setHeader("Content-Disposition", "attachment;filename*=utf-8''" + encodedFilename);

        // 获取响应的输出流
        OutputStream outputStream = response.getOutputStream();

        // 使用 EasyExcel 直接写入响应输出流
        EasyExcel.write(outputStream, User.class).sheet("用户信息").doWrite(users);

    }
  • ​​​​​​在Controller中使用EasyExcel做简单的导入​​​​​​​​​​​​​​
//文件导入
    @PostMapping("/import")
    public void imports(MultipartFile file) throws IOException {
        //通过MultipartFile对象file获取文件内容的输入流
        //使用getInputStream()方法获取文件的输入流
        InputStream inputStream = file.getInputStream();
        //使用EasyExcel库从输入流中读取Excel文件内容。
        //接收一个 InputStream 对象作为参数,这个输入流指向要读取的 Excel 文件
        // head(User.class)指定了数据的映射类型为User类,
        // sheet()表示读取Excel的第一个工作表,
        // doReadSync()执行同步读取操作
        List<User> list = EasyExcel.read(inputStream).head(User.class).sheet().doReadSync();
        //遍历 list 中的每个 User 对象,并调用 userService.userIns(user) 方法将每个 User 对象插入到数据库中。
        for (User user : list) {
            userService.userIns(user);
        }
        System.out.println(list);
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值