美文网首页
EasyExcel的读写操作示例

EasyExcel的读写操作示例

作者: 攻城老狮 | 来源:发表于2020-09-01 08:55 被阅读0次

0 引入依赖

<!-- xls格式excel依赖包 -->
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>3.17</version>
</dependency>
<!--xlsx格式excel依赖包-->
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>3.17</version>
</dependency>
<!-- easyexcel依赖包 -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>easyexcel</artifactId>
    <version>2.1.1</version>
</dependency>

1 写操作

1.1 创建实体类

学生类,包含学生编号和姓名

package com.yqj.serviceedu.excel;

import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;

@Data
public class DemoStudent {
    //表头内容
    @ExcelProperty("学生编号")
    private Integer no;
    @ExcelProperty("学生姓名")
    private String name;
}

1.2 写文件

向student.xlsx中写入10条数据

package com.yqj.serviceedu.excel;

import com.alibaba.excel.EasyExcel;
import org.junit.Test;

import java.util.ArrayList;
import java.util.List;

public class TestEasyExcel {

    //写文件
    @Test
    public void testEasyExcelWrite(){
        String filePath = "D:/student.xlsx";
        EasyExcel.write(filePath,DemoStudent.class).sheet("学生信息").doWrite(getData());
    }

    public static List<DemoStudent> getData(){
        List<DemoStudent> students = new ArrayList<>();
        for (int i = 0; i < 10; i++) {
            DemoStudent student = new DemoStudent();
            student.setNo(i);
            student.setName("yorick"+i);
            students.add(student);
        }
        return students;
    }
}

2 读文件

2.1 在实体类的注解中加入索引信息

package com.yqj.serviceedu.excel;

import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;

@Data
public class DemoStudent {
    @ExcelProperty(value = "学生编号",index = 0)
    private Integer no;
    @ExcelProperty(value = "学生姓名",index = 1)
    private String name;
}

2.2 配置读取文件的监听器

package com.yqj.serviceedu.excel;

import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;

import java.util.Map;

public class ExcelListener extends AnalysisEventListener<DemoStudent> {
    
    //读取除表头外的每行数据执行该方法
    @Override
    public void invoke(DemoStudent data, AnalysisContext context) {
        System.out.println(data);
    }

    //获取表头数据
    @Override
    public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {
        System.out.println(headMap);
    }

    //读取结束执行该方法
    @Override
    public void doAfterAllAnalysed(AnalysisContext context) {
        System.out.println("finish");
    }
}

1.3 读文件

读取之前写入的那个文件 student.xlsx

package com.yqj.serviceedu.excel;

import com.alibaba.excel.EasyExcel;
import org.junit.Test;

import java.util.ArrayList;
import java.util.List;

public class TestEasyExcel {

    //读文件
    @Test
    public void testEasyExcelRead(){
        String filePath = "D:/student.xlsx";
        EasyExcel.read(filePath,DemoStudent.class,new ExcelListener()).sheet().doRead();
    }
}

相关文章

网友评论

      本文标题:EasyExcel的读写操作示例

      本文链接:https://www.haomeiwen.com/subject/qidpsktx.html