EasyExcel的简单读写操作

本文介绍了如何使用EasyExcel库读取Excel文件内容,通过创建实体类进行数据绑定,然后进行数据筛选,将筛选后的结果导出到新的Excel文件。示例代码展示了读取模板文件,根据学生年龄进行条件筛选,并将筛选结果(包含错误信息)写入新的Excel文件的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

读取Excel中的内容,并将筛选后的内容导出

1、导入依赖

<dependency>
     <groupId>com.alibaba</groupId>
     <artifactId>easyexcel</artifactId>
     <version>3.2.1</version>
</dependency>

2、创建用来导入的实体类

@Data
@AllArgsConstructor
@NoArgsConstructor
public class StudentImport {
	// 用名字去匹配,这里需要注意,如果名字重复,会导致只有一个字段读取到数据
    @ExcelProperty("学生名称")
    private String name;

    @ExcelProperty("学生年龄")
    private Integer age;

}

3、创建用来筛选后进行导出的实体类

@Data
@AllArgsConstructor
@NoArgsConstructor
// 设置列宽
@ColumnWidth(25)
// 设置表头行高
@HeadRowHeight(20)
public class StudentReport {

    @ExcelProperty("学生名称")
    private String name;

    @ExcelProperty("学生年龄")
    private Integer age;

    @ExcelProperty("错误信息")
    private String msg;
}

4、创建测试类

public static void main(String[] args) {
    // 读操作,模板是E:\\template.xlsx,使用StudentImport类接收值,创建excel一行一行的回调监听器
    EasyExcel.read("E:\\template.xlsx", StudentImport.class, new PageReadListener<StudentImport>((stu)->{
        ArrayList<StudentReport> list = new ArrayList<>();
        // 进行简单的条件筛选后放入上方list中
        stu.stream().forEach(studentImport -> {
            if(studentImport.getAge() > 21){
                StudentReport report = new StudentReport();
                BeanUtils.copyProperties(studentImport,report);
                report.setMsg("年龄大于21");
                list.add(report);
            }else{
                StudentReport report = new StudentReport();
                BeanUtils.copyProperties(studentImport,report);
                report.setMsg("年龄正常");
                list.add(report);
            }
        });
        // 在回调中进行写操作,使用StudentReport类来将list中的值写入到E:\template-write.xlsx
        EasyExcel.write("E:\\template-write.xlsx",StudentReport.class).sheet().doWrite(list);
    }
    )).sheet().doRead();
}

本文中只是对EasyExcel的简单的读操作进行举例,EasyExcel中还有填充等操作,若想了解更多请移至官方文档进行查看。
点击链接跳转至: EasyExecl 官方文档

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值