Java使用Easy Excel对Excel进行操作

devtools/2024/9/24 17:08:54/

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/devtools/98490.html

相关文章

【科技前沿探索】电路仿真软件SmartEDA:重塑教学新纪元,解锁学习无限可能

在信息爆炸的时代&#xff0c;科技的力量正以前所未有的速度改变着我们的生活方式&#xff0c;而教育领域也不例外。电路学&#xff0c;作为理工科教育中的基石&#xff0c;其复杂性与抽象性常让初学者望而生畏。但幸运的是&#xff0c;随着电路仿真软件SmartEDA的横空出世&…

微服务实战系列之玩转Docker(十)

前言 我们知道Docker的“使命”是为了快速完成应用的迁移和部署。为提升它的战斗能力&#xff0c;Docker官方携手发布了Docker Swarm—— 一个快速完成Docker集群构建的利器。那么请先回忆一下本系列第八篇&#xff08;重点compose&#xff09;和第九篇&#xff08;重点networ…

Android -- 谷歌地图绘制

引言 集成之后&#xff0c;在项目中肯定要打点&#xff0c;画线&#xff08;实线&#xff0c;虚线&#xff09;&#xff0c;绘制区域等。 Android 谷歌地图绘制轨迹polyline 在Android中使用Google Maps绘制轨迹polyline的基本步骤如下&#xff1a; 确保你的项目已经正确集成…

部门来了个测试开发,听说是00后,上来一顿操作给我看呆了...

公司新来了个同事&#xff0c;听说大学是学的广告专业&#xff0c;因为喜欢IT行业就找了个培训班&#xff0c;后来在一家小公司实习半年&#xff0c;现在跳槽来我们公司。来了之后把现有项目的性能优化了一遍&#xff0c;服务器缩减一半&#xff0c;性能反而提升4倍&#xff01…

电路笔记(PCB):数字信号的带宽与上升沿时间经验公式 BW = \frac{0.35}{T_r}

数字信号的带宽由上升沿决定 1. 传输线路的带宽如果小于信号的带宽就会产生失真 带宽限制和失真&#xff1a;当信号通过带宽受限的传输线路时&#xff0c;如果线路的带宽小于信号的带宽&#xff0c;信号的高频成分将被削弱或完全滤除。这种削弱会导致信号失真&#xff0c;特别…

谈一谈数据虚拟化的技术核心和应用架构

数据虚拟化&#xff08;Data Virtualization&#xff09;是对数据资源的抽象&#xff0c;通过屏蔽数据资源的存储位置和访问方式&#xff0c;能够将不同数据源、不同格式的数据资源&#xff0c;进行逻辑上的整合集成。这一技术方案与过去面对传统数仓的弊端&#xff0c;业界过去…

Linux非VP扩容方案

Linux系统非VP扩容方案 描述&#xff1a;现有虚拟机磁盘1TB 容量不够&#xff0c;需要扩容。 采用&#xff1a;https://bbs.sangfor.com.cn/forum.php?modviewthread&tid110403 扩容失败。原因是没有VP 和LV 解决方案&#xff1a; 1&#xff0c;查看分区 cat /proc/p…

回归分析在因果分析中的应用:原理、方法与局限性

目录 1. 引言2. 回归分析的基本原理3. 线性回归与因果分析4. 多元回归与因果分析5. 回归分析的优势与局限6. 结论1. 引言 在数据分析的世界中,回归分析不仅是揭示数据背后故事的强大工具,它还是理解因果关系的重要方法。无论你是在探索广告投入对销售的影响,还是在研究教育…