Java使用Easy Excel对Excel进行操作

server/2024/11/15 0:22:50/

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/server/106840.html

相关文章

[从0开始AIGC][LLM]:LLM中Encoder-Only or Decoder-Only?为什么主流LLM是Decoder-Only?

LLM中Encoder-Only or Decoder-Only & 为什么主流LLM是Decoder-Only&#xff1f; 文章目录 LLM中Encoder-Only or Decoder-Only & 为什么主流LLM是Decoder-Only&#xff1f;1. 什么是Encoder-only、Decoder-Only2. 为什么当前主流的LLM都是Decoder-only的架构低秩问题 …

62. 不同路径 -dp6

. - 力扣&#xff08;LeetCode&#xff09;. - 备战技术面试&#xff1f;力扣提供海量技术面试资源&#xff0c;帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/unique-paths/ 输入&#xff1a;m 3, n 2 输出&#xff1a;3 解释&a…

7. Java 中 HashMap 的扩容机制是怎样的?

​​​​​​HashMap 是基于哈希表的数据结构&#xff0c;其容量是动态调整的。当存储的元素数量增加时&#xff0c;为了保持较好的性能&#xff0c;HashMap 需要进行扩容。HashMap 的扩容机制是为了减少哈希碰撞&#xff0c;提高查询效率。 1. 初始容量和负载因子 初始容量&a…

WSL-ubuntu下载安装配置cudnn

下载 安装cuDnn的话需要和CUDA版本对应&#xff0c;可参考官网&#xff1a; cuDNN Archive | NVIDIA Developer 我的cuda是11.8 这个cuDNN8.9.7_Linux直接下载&#xff1a; https://developer.nvidia.com/downloads/compute/cudnn/secure/8.9.7/local_installers/11.x/cudn…

Python学习笔记(十)

""" 演示对文件的读取 """ import time # 打开文件 # fopen(name,mode,encoding) # name:是要打开的目标文件名的字符串&#xff08;可以包含文件所在的具体路径&#xff09; # mode:设置打开文件的模式&#xff08;访问模式&#xff09;&#x…

JVM的内存模型和垃圾回收

JVM内存区域 内存模型图&#xff1a; 堆 线程共享。所有的对象实例以及数组都要在堆上分配。回收器主要管理的对象。 它的目的是存放对象实例。同时它也是GC所管理的主要区域&#xff0c;因此常被称为GC堆&#xff0c;又由于现在收集器常使用分代算法&#xff0c;Java堆中还…

【docker compose 部署和 go 热部署工具fresh】

文章目录 docker-compose.yml 文件配置得很全面&#xff0c;以下是一些注释安装 fresh配置 fresh注意事项 docker-compose.yml 文件配置得很全面&#xff0c;以下是一些注释 version: 3 services:# MySQL 服务geekai-mysql:image: registry.cn-shenzhen.aliyuncs.com/geekmast…

TapData 信创数据源 | 国产信创数据库 Vastbase 数据同步指南,加速国产化进程,推进自主创新建设

随着国家对自主可控的日益重视&#xff0c;目前在各个行业和区域中面临越来越多的国产化&#xff0c;采用有自主知识产权的国产数据库正在成为主流。长期以来&#xff0c;作为拥有纯国产自研背景的 TapData&#xff0c;自是非常重视对于更多国产信创数据库的数据连接器支持&…