EasyExcel在web端环境下的导入导出

废话不多说,上干货是辰兮的传统了,收藏就完事了。


前言

        随着大数据时代的不断发展,数据越来越多时,数据的批量导入和导出也随之而来,本文就介绍了EasyExcel导入导出的基础内容。


提示:以下是本篇文章正文内容,下面案例可供参考

一、EasyExcel可以做什么?

EasyExcel,顾名思义,简单Excel,本文主要实现在web端情况下的导入导出。

二、使用步骤

1.引入pom依赖

代码如下(示例):

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>easyexcel</artifactId>
    <version>2.2.0-beta2</version>
</dependency>

PS:本文使用的是Mybatis-Plus作为持久层框架。

2.导入:

代码如下(示例):

User.java(实体类)

注意:这里不能使用链式编程,使用@Accessors(chain = true)会导致获取的数据为null。

@Data
@AllArgsConstructor
@NoArgsConstructor
/*@Accessors(chain = true)*/
public class User  {
    @ExcelProperty(value = "编号")
    private int id;
    @ExcelProperty(value = "用户名")
    private String username;
    @ExcelProperty(value = "密码")
    private String userpassword;
}

下面是一些常用的EasyExcel注解:

@ExcelProperty(value = "编号")

注解中有三个参数value,index,converter分别代表列名,列序号,数据转换方式,valueindex只能二选一,通常不用设置converter,一般只用设置value就可以,用于标题字段的描述。

@ColumnWith(value = 10)

用于设置列宽度的注解,注解中只有一个参数value,value的单位是字符长度,最大可以设置255个字符,因为一个excel单元格最大可以写入的字符个数就是255个字符。

@ContentRowHeight(value = 10)

用于设置行高


UserController.java

    @PostMapping("/imports")
    public void imports(MultipartFile file) throws IOException {
        EasyExcel.read(file.getInputStream(), User.class, userListener).sheet().doRead();
        List<User> users = userListener.getUsers();
        for(User user:users){
            userService.insertOne(user);
        }
    }

UserListener.java(监听器)

用于监听导入数据,invoke()方法是读取到每一行数据都做一个操作,doAfterAllAnalysed()方法是读取全部的数据之后做的操作。

@Component
public class UserListener extends AnalysisEventListener<User> {

    List<User> users =new ArrayList<>();
    @Override
    public void invoke(User user, AnalysisContext analysisContext) {
        users.add(user);
        System.out.println(user);
    }

    @Override
    public void doAfterAllAnalysed(AnalysisContext analysisContext) {

    }

    public List<User> getUsers() {
        return users;
    }
}

3、导出
UserController.java

@GetMapping("/exports") 
public void  exports(HttpServletResponse response) throws IOException {
        List<User> users = userService.selectAll();
        response.setContentType("application/vnd.ms-excel");
        response.setCharacterEncoding("utf-8");
        // 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系
        String fileName = URLEncoder.encode("userInfo", "UTF-8").replaceAll("\\+", "%20");
        response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
        EasyExcel.write(response.getOutputStream(),User.class).sheet("模板").doWrite(users);
    }

4、PostMan测试

导入测试:

添加参数xlsx文件进行测试

 导出测试:


总结

以上就是今天要讲的内容,本文介绍了EasyExcel在web端导入导出的使用,如果觉得有帮助,就给辰兮点个赞吧!

猜你喜欢

转载自blog.csdn.net/ke2602060221/article/details/124015186