1.介绍
EasyExcel是一个基于Java的简单、省内存的读写Excel的开源项目
参考
https://blog.csdn.net/u013044713/article/details/120249233
2.依赖
| <dependency> |
| <groupId>com.alibaba</groupId> |
| <artifactId>easyexcel</artifactId> |
| <version>3.1.0</version> |
| <exclusions> |
| <exclusion> |
| <artifactId>poi-ooxml-schemas</artifactId> |
| <groupId>org.apache.poi</groupId> |
| </exclusion> |
| </exclusions> |
| </dependency> |
3.准备POJO类(模板)
| @Data |
| public class DemoData { |
| @ExcelProperty(value="字符串") |
| private String string; |
| @ExcelProperty(value="日期值") |
| private Date date; |
| @ExcelProperty(value="数字值") |
| private Double doubleData; |
| } |
4.读
核心思想:读取excel文件的每一个sheet(常用API读取第一个sheet),将每一行(自定排除第一行)解析,转换成一个对象(对象的属性和excel每行的列需要指定关系),每行都会触发一个invoke方法!
4.1.声明监听
| |
| @Slf4j |
| public class DemoDataListener implements ReadListener<DemoData> { |
| |
| |
| |
| |
| |
| |
| |
| @Override |
| public void invoke(DemoData data, AnalysisContext context) { |
| System.out.println(data); |
| } |
| |
| |
| |
| |
| |
| |
| @Override |
| public void doAfterAllAnalysed(AnalysisContext context) { |
| |
| System.out.println("解析完毕了吗?。。。。。。。。"); |
| } |
| } |
4.2.读取
| String fileName = "E:/demo.xlsx"; |
| EasyExcel.read(fileName, DemoData.class, new DemoDataListener()).sheet().doRead(); |
5.写
核心思想:加载List<类>集合,遍历集合中的对象,根据对象上的@ExcelProperty(value="字符串")注解值设置列头,每行数据则加载集合中的每个对象一次写入!
| List<DemoData> list = ListUtils.newArrayList(); |
| for (int i = 0; i < 10; i++) { |
| DemoData data = new DemoData(); |
| data.setString("字符串" + i); |
| data.setDate(new Date()); |
| data.setDoubleData(0.56); |
| list.add(data); |
| } |
| EasyExcel.write("E:/xie.xlsx", DemoData.class).sheet("sheettttt").doWrite(list); |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了