Easy Excel官网

EasyExcel官方文档 – 基于Java的Excel处理工具 | Easy Excel (alibaba.com)

https://easyexcel.opensource.alibaba.com/

Easy Excel的特点和优势:

  1. 简单易用:Easy Excel提供了简洁的API,使用起来非常方便。开发人员可以通过几行代码就能实现Excel文件的读写操作

  2. 高性能:Easy Excel采用基于流的方式进行读写操作,能够处理大规模的Excel文件,并且具有较高的读写性能

  3. 格式支持:Easy Excel支持多种常见的Excel文件格式,包括xlsxlsx等。开发人员可以根据自己需求选择适合的格式进行读写操作

  4. 数据转换:Easy Excel提供了灵活的数据转换功能,可以将Excel文件中的数据转换成Java对象或者将Java对象转换成Excel文件中的数据

  5. 样式设置:Easy Excel支持设置Excel文件中单元格样式,包括字体颜色边框等,可以使生成的Excel文件更加美观。

  6. 导入导出功能:Easy Excel提供了便捷的导入导出功能,可以快速地将Java对象导出为Excel文件,或者将Excel文件中的数据导入到Java对象中进行处理。 

前期准备

Excel表格位置为(d:\read.xlsx):

 导入依赖

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>easyexcel</artifactId>
    <version&gt;3.0.5</version&gt;
</dependency>

DemoData对象类:

package com.muyuan.review.pojo;


import com.alibaba.excel.annotation.ExcelProperty;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;

import java.util.Date;

@Getter
@Setter
@EqualsAndHashCode
public class DemoData {
    //注意名字与表列名匹配
    //否则会报错  can not find data format for:
    //字段顺序与表格列顺序一致

    //注解优先级大于索引
    @ExcelProperty("数字")
    private Double doubleData;
    @ExcelProperty("用户名")
    private String string;
    @ExcelProperty("日期")
    private Date date;
}

简单用法一:

ReadDemo:

import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.read.listener.PageReadListener;
import com.alibaba.fastjson.JSON;
import com.muyuan.review.pojo.DemoData;
import lombok.extern.slf4j.Slf4j;

@Slf4j
public class ReadDemo {
    public static void main(String[] args) {
        // 写法1:JDK8+ ,不用额外一个DemoDataListener
        // since: 3.0.0-beta1
        //原:  String fileName = TestFileUtil.getPath() + "demo" + File.separator + "demo.xlsx";
        //改: 获取文件路径
        String fileName = "d:\read.xlsx";
        // 这里默认每次会读取100条数然后返回过来 直接调用使用数据就行
        // 具体需要返回多少行可以在`PageReadListener`的构造函数设置
        EasyExcel.read(
                //文件路径
                fileName,
                //字体类的字节码DemoData对象
                DemoData.class,
                //读取一条数据的监听器
                new PageReadListener<DemoData>(dataList -> {
            for (DemoData demoData : dataList) {
                log.info("读取一条数据{}",
                        //格式化转化读到的数据转化为JSON字符串
                        JSON.toJSONString(demoData));
            }
        })).sheet().doRead();
    }
}

结果

简单用法二(使用监听器): 

注意:很重要的点 DemoDataListener 不能被spring管理,要每次读取excel都要new,然后里面用到spring可以构造方法传进去

 监听器(ReadDemoListener):

package com.muyuan.review.listener;

import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.alibaba.fastjson.JSON;
import com.muyuan.review.pojo.DemoData;
import lombok.extern.slf4j.Slf4j;

import javax.servlet.ReadListener;
import javax.swing.event.AncestorListener;
import java.io.IOException;

/**
 * @Classname ReadDemoListener
 * @Description
 * @Date 2023/12/3 12:17
 * @Created by 玉满堂
 */
// 有个很重要的点 DemoDataListener 不能被spring管理,
// 要每次读取excel都要new,然后里面用到spring可以构造方法传进去
//DemoData读取到每一个对象泛型
@Slf4j
public class ReadDemoListener extends AnalysisEventListener<DemoData> {

    @Override
    public void invoke(DemoData data, AnalysisContext context) {
        //没读取一条数据,执行一次
        System.out.println(JSON.toJSONString(data));
    }

    @Override
    public void doAfterAllAnalysed(AnalysisContext context) {
        // 读取完所有执行
        log.info("所有数据解析完成!");
    }

}

ReadDemo:

import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.read.listener.PageReadListener;
import com.alibaba.excel.read.listener.ReadListener;
import com.alibaba.fastjson.JSON;
import com.muyuan.review.listener.ReadDemoListener;
import com.muyuan.review.pojo.DemoData;
import lombok.extern.slf4j.Slf4j;

@Slf4j
public class ReadDemo {
    public static void main(String[] args) {
        // 写法1:JDK8+ ,不用额外一个DemoDataListener
        // since: 3.0.0-beta1
        //原:  String fileName = TestFileUtil.getPath() + "demo" + File.separator + "demo.xlsx";
        //改: 获取文件路径
        String fileName = "d:\read.xlsx";
        EasyExcel.read(
                //文件路径
                fileName,
                //文件字节对象
                DemoData.class,
                //监听器(在解析过程接收和处理数据)
                new ReadDemoListener()
        )
                //指定读取的Sheet页,默认为第一个Sheet页
                .sheet()
                //执行实际的读取解析操作
                .doRead();

    }
}

结果

原文地址:https://blog.csdn.net/A2029292473/article/details/134762693

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_33262.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注