Easy Excel官网:
EasyExcel官方文档 – 基于Java的Excel处理工具 | Easy Excel (alibaba.com)
https://easyexcel.opensource.alibaba.com/
Easy Excel的特点和优势:
-
简单易用:Easy Excel提供了简洁的API,使用起来非常方便。开发人员可以通过几行代码就能实现Excel文件的读写操作。
-
多格式支持:Easy Excel支持多种常见的Excel文件格式,包括xls、xlsx等。开发人员可以根据自己的需求选择适合的格式进行读写操作。
-
数据转换:Easy Excel提供了灵活的数据转换功能,可以将Excel文件中的数据转换成Java对象或者将Java对象转换成Excel文件中的数据。
-
样式设置:Easy Excel支持设置Excel文件中单元格的样式,包括字体、颜色、边框等,可以使生成的Excel文件更加美观。
-
导入导出功能:Easy Excel提供了便捷的导入导出功能,可以快速地将Java对象导出为Excel文件,或者将Excel文件中的数据导入到Java对象中进行处理。
前期准备:
Excel表格位置为(d:\read.xlsx):
导入依赖:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>3.0.5</version>
</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进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。