基于EasyExcel操作Excel

介绍:

Java操作excel的基本是Apace POI,原生的Apace POI用起来有些复杂,今天介绍的EasyExcel是基于Apace POI的,简化了Java端操作excel的方式。

所需依赖:

#所需依赖
<!-- https://mvnrepository.com/artifact/com.alibaba/easyexcel -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>easyexcel</artifactId>
    <version>2.2.6</version>
</dependency>

基本写操作:

@Data
public class Student {
    @ExcelProperty(index = 0, value = "主键")
    private Integer id;

    /**
     * 姓名
     */
    @ExcelProperty(index = 1, value = "姓名")
    private String name;

    /**
     * 年龄
     */
    @ExcelProperty(index = 2,value = "年龄")
    private Integer age;
}

@Test
public void studentsWrite() {
    String fileName = "D:" + File.separator + "demo.xlsx";
    String sheetName = "test";
    List<Student> students = new ArrayList<>();
    students.add(new Student(1, "aa", 20));
    students.add(new Student(2, "bb", 22));
    students.add(new Student(3, "cc", 23));
    students.add(new Student(4, "dd", 24));
    EasyExcel.write(fileName, Student.class).sheet(sheetName).doWrite(students);
}

基本写操作的效果图如下:
基本写操作的效果图

基本读操作:

public class StudentListener extends AnalysisEventListener<Student> {

    /**
     * 每隔5条存储数据库,实际使用中可以3000条,然后清理list ,方便内存回收
     */
    private static final int BATCH_COUNT = 5;

    List<Student> list = new ArrayList<Student>();

    @Override
    public void invoke(Student student, AnalysisContext analysisContext) {
        System.out.println("解析到一条数据:" + JSON.toJSONString(student));
        list.add(student);
        // 达到BATCH_COUNT了,需要去存储一次数据库,防止数据几万条数据在内存,容易OOM
        if (list.size() >= BATCH_COUNT) {
            // 存储完成清理 list
            list.clear();
        }
    }

    @Override
    public void doAfterAllAnalysed(AnalysisContext analysisContext) {
        System.out.println("最后一次解析了" + list.size() + "条数据!");
        System.out.println("所有数据解析完成!");
    }
}
    @Test
    public void studentsRead() {
        String fileName = "D:\\students.xls";
        EasyExcel.read(fileName, Student.class, new StudentListener()).sheet().doRead();
    }

基本读操作的效果图如下:
基本读操作效果图

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值