EasyExcel导入导出excel

引入依赖

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>easyexcel</artifactId>
    <version>${easyexcel.version}</version>
</dependency>

<properties>
    <easyexcel.version>3.1.1</easyexcel.version>
</properties>

导出excel

/*
* 导出excel
* fileName excel文件名
* Collection<?> data 导出数据
* writer.write(data, sheet)
* */
String fileName = "文件名" + DateUtil.formatDate(new Date()) + ".xlsx";
File file = new File(fileName);
ExcelWriter writer = EasyExcel.write(file).build();
WriteSheet sheet = EasyExcel.writerSheet("表格名").build();
writer.write(data, sheet);
writer.finish();
file.deleteOnExit();

导入excel

  1. 创建excel字段映射的实体类
  2. 创建excel监听器(新建类实现AnalysisEventListener<T>)
  3. 业务层实现

创建excel字段映射的实体类

实体类属性

@ExcelProperty(“ FID”) //填入excel列名映射

private String id;

创建excel监听器

public class DataReadListener<T> extends AnalysisEventListener<T> {
    /**
     * 自定义用于暂时存储data
     * 可以通过实例获取该值
     */
    List<T> datas = new ArrayList<>();

    public DataReadListener(){
    }

    /**
     * 每解析一行都会回调invoke()方法
     *
     * @param t  读取后的数据对象
     * @param analysisContext 内容
     */
    @Override
    public void invoke(T t, AnalysisContext analysisContext) {
        System.out.println("解析到一条数据:{}"+JSON.toJSONString(t));
        datas.add(t);
    }

    @Override
    public void doAfterAllAnalysed(AnalysisContext analysisContext) {
        //解析结束销毁不用的资源
        //注意不要调用datas.clear(),否则getDatas为null
        System.out.println(JSON.toJSONString(datas));
    }

    /**
     * 返回数据
     *
     * @return 返回读取的数据集合
     **/
    public List<T> getData(){
        return datas;
    }
}

业务层实现

public void ReadExcel(String fileName){

    //创建监听器dataListener
    DataReadListener dataListener = new DataReadListener();
    //读文件为fileName的excel文件,数据存入dataListener,T为excel字段映射的实体类
    EasyExcel.read(fileName, T.class, dataListener).sheet().doRead();
    //获取读入的List<T>数据
    List<T> list= dataListener.getData();

}

  • 14
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值