Java使用Easy Excel对Excel进行操作

ops/2024/9/22 13:58:40/

Easy Excel使用教程API:

读Excel | Easy Excel 官网

使用代码示例:

需要自行创建一个Maven项目,然后pom文件中需要的依赖如下:

<dependencies><!-- easyExcel 表格依赖 --><dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.3.2</version></dependency><!-- lombok --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.22</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>4.12</scope></dependency></dependencies>

创建读写对象:

DemoData.java

package pojo;import com.alibaba.excel.annotation.ExcelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;@Data
@NoArgsConstructor
@AllArgsConstructor
public class DemoData {@ExcelProperty("标题1")private String title1;@ExcelProperty("标题2")private String title2;@ExcelProperty("标题3")private String title3;@ExcelProperty("标题4")private String title4;}

读文件:

准备好待读取的Excel文件

注意,表头字段名称需要与读写对象(DemoData.java)中的ExcelProperty属性值一致,否则会导致读不到数据。

读取文件的示例代码:

package read;import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.read.listener.PageReadListener;
import org.junit.Test;
import pojo.DemoData;public class SimpleRead {@Testpublic void simpleRead(){// 写法1:JDK8+ ,不用额外写一个DemoDataListener// since: 3.0.0-beta1String fileName = "C:\\Users\\11972\\Desktop\\test.xlsx";// 这里默认每次会读取100条数据 然后返回过来 直接调用使用数据就行// 具体需要返回多少行可以在`PageReadListener`的构造函数设置EasyExcel.read(fileName, DemoData.class, new PageReadListener<DemoData>(dataList -> {for (DemoData demoData : dataList) {System.out.println(demoData);}})).sheet().doRead();}
}

执行结果:

写文件:

将数据写入到Excel文件中,准备好一个空的Excel文件

将程序读取到的数据写入到Excel中:

package write;import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.util.ListUtils;
import org.junit.Test;
import pojo.DemoData;
import java.util.List;public class SimpleWrite {//产生模拟数据private List<DemoData> dataContent(int count) {List<DemoData> list = ListUtils.newArrayList();for (int i = 0; i < count; i++) {list.add(new DemoData(i+"a",i+"b",i+"c",i+"d"));}return list;}@Testpublic void write(){String fileName = "C:\\Users\\11972\\Desktop\\writeTesg.xlsx";// 这里 需要指定写用哪个class去写,然后写到第一个sheet,名字为模板 然后文件流会自动关闭EasyExcel.write(fileName, DemoData.class).sheet("写入数据").doWrite(dataContent(10));}
}

执行结果:

10条数据被写入到了Excel中。

根据模板填充文件:

如果想让写入到Excel中数据,按照自定义的格式去填充,那么就需要事先定义好一个模板文件,如下所示:

数据的表头为黄色,生成的数据为红色。

第二行中的标签代表要填充的字段,对应到读写对象(DemoData.java)时,字段和Excel中的列对应关系。格式为 {.字段名称}

示例代码:

package write;import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.util.ListUtils;
import com.alibaba.excel.write.metadata.WriteSheet;
import org.junit.Test;
import pojo.DemoData;import java.util.List;public class FillWrite {private List<DemoData> MockData(int count) {List<DemoData> list = ListUtils.newArrayList();for (int i = 0; i < count; i++) {list.add(new DemoData(i+"aa",i+"bb",i+"cc",i+"dd"));}return list;}@Testpublic void write(){// 模板文件地址String templateFileName = "C:\\Users\\11972\\Desktop\\template.xlsx";// 输出文件地址String fileName = "C:\\Users\\11972\\Desktop\\new.xlsx";try (ExcelWriter excelWriter = EasyExcel.write(fileName).withTemplate(templateFileName).build()) {WriteSheet writeSheet = EasyExcel.writerSheet().build();excelWriter.fill(MockData(20), writeSheet);}}
}

运行结果:

按照模板的格式,将数据进行了输出。

 


http://www.ppmy.cn/ops/97985.html

相关文章

联想电脑如何查看ip地址?详细介绍几种方法

随着互联网的普及和技术的飞速发展&#xff0c;IP地址已成为我们日常网络活动中不可或缺的一部分。无论是访问网站、远程办公还是进行网络游戏&#xff0c;IP地址都扮演着重要的角色。对于联想电脑用户来说&#xff0c;了解如何查看自己的IP地址是一项基本技能。虎观代理小二将…

【C++ 面试 - 面向对象】每日 3 题(六)

✍个人博客&#xff1a;Pandaconda-CSDN博客 &#x1f4e3;专栏地址&#xff1a;http://t.csdnimg.cn/fYaBd &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会分享 C 面试中常见的面试题给大家~ ❤️如果有收获的话&#xff0c;欢迎点赞&#x1f44d;收藏&…

python学习—redis入门,新手小白轻松学

目录 一.安装redis-py库 二.连接redis服务器 三.基本操作 &#xff08;1&#xff09;字符串 1.一次添加一个键值对 2. 一次添加多个键值对 3. 设置存在秒数 4. 设置过期时间&#xff08;秒&#xff09; 5. 设置存在天数 完整代码 &#xff08;2&#xff09;列表 1. …

【软件造价咨询】信息化项目预算评审看什么?

在信息化项目预算评审中&#xff0c;各方往往只重视预算金额部分&#xff0c;而忽视了项目建设的全局性和整体性把关&#xff0c;导致信息系统的重复建设、分散建设、业务和系统两张皮、重功能轻数据、重投资轻方案等问题频出&#xff0c;从而大幅降低财政投资效益。 例如&…

zyx青岛实训day 29 8/15 (python脚本使数据库读写分离,mysql主从开机自动同步,python操作数据库,MyCat插件的学习)

1、python脚本实现数据库主从分离 # 引入模块 python链接mysql工具&#xff0c;驱动包&#xff0c;连接器 import pymysql # python 类 类名 rwsplit,名字可以和文件名不一致 # 三个函数&#xff0c;函数的标识 def 函数名 (self,参数列表): # __init__ 初始化函数&a…

WordPress黑格网址导航主题blackgrid

BlackCandy-V2.0&#xff1a;全新升级&#xff01; 首推专题区(推荐分类) 更多自定义颜色&#xff01;选择自己喜欢的色系 焕然一新的UI设计&#xff0c;更加扁平和现代化 新增用户浏览显示模式&#xff1a;卡片式和两栏布局 完善电脑和移动端的响应式交互设计 新增原创个…

Redis——知识点

Redis问答 1. 认识Redis 1.1 什么是Redis Redis是一种基于内存的数据库&#xff0c;对数据的读写都在内存上操作&#xff0c;因此读写速度很快&#xff0c;常用于缓存、消息队列、分布式锁等的应用场景 Redis提供了很多数据类型来支撑各种场景&#xff0c;例如String、hash…

linux容器基础-namespace-3(pid)

pid namespace pid namespace表示隔离一个具有独立PID的运行环境。 在每一个pid namespace中&#xff0c;进程的pid都从1开始&#xff0c;且和其他pid namespace中的PID互不影响。 这意味着&#xff0c;不同pid namespace中可以有相同的PID值。 在介绍pid namespace之前&#…