JAVA代码优化:Easy Excel(操作Excel文件的开源工具)

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文件格式,包括xls、xlsx等。开发人员可以根据自己的需求选择适合的格式进行读写操作。

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

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

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

前期准备:

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

JAVA代码优化:Easy Excel(操作Excel文件的开源工具)_第1张图片

 导入依赖:


    com.alibaba
    easyexcel
    3.0.5

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(dataList -> {
            for (DemoData demoData : dataList) {
                log.info("读取到一条数据{}",
                        //格式化转化读到的数据转化为JSON字符串
                        JSON.toJSONString(demoData));
            }
        })).sheet().doRead();
    }
}

结果:

JAVA代码优化:Easy Excel(操作Excel文件的开源工具)_第2张图片

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

注意:很重要的点 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 {

    @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();

    }
}

结果:

JAVA代码优化:Easy Excel(操作Excel文件的开源工具)_第3张图片

你可能感兴趣的:(JAVA代码优化,excel,java,开发语言,开源)