网站首页 > 博客文章 正文
EasyExcel 是一个基于 Java 的,简单易用的 Excel 操作工具,可以方便地读写 Excel 文件,支持多种数据源、大量数据导出等功能。
以下是 EasyExcel 使用的示例:
1. 引入 EasyExcel 依赖
在 Maven 项目中,在 `pom.xml` 中添加以下依赖:
```xml
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.3.0</version>
</dependency>
```
2. 写 Excel 文件
使用 EasyExcel 写入 Excel 文档需要创建两个类:自定义数据模型类和处理程序类。
例如,如果要将一组学生信息写入到 Excel 文件中,首先需要创建一个自定义数据模型类:
```java
@Data
public class Student {
private String name;
private Integer age;
private String gender;
}
```
然后,需要创建一个处理程序类来实现写操作:
```java
public class WriteHandler implements WriteHandler {
@Override
public void sheet(int sheetNo, Sheet sheet) {
// 设置表头
List<String> head = Arrays.asList("姓名", "年龄", "性别");
sheet.setHead(head);
}
@Override
public void row(int rowNum, List<Object> rowData) {
// 这里的 rowData 就是上面定义的 Student 类对象
// 将 rowData 写入 Excel 即可
}
}
```
接下来,就可以通过以下代码将数据写入 Excel 文件了:
```java
EasyExcel.write(fileName, Student.class)
.sheet()
.doWrite(data)
```
其中,`fileName` 是要写入的文件名,`Student.class` 表示使用 Student 类作为数据模型,`data` 是要写入到 Excel 文件中的数据集合。
3. 读 Excel 文件
使用 EasyExcel 读取 Excel 文件也需要创建两个类:自定义数据模型类和处理程序类。
例如,如果要从 Excel 文件中读取一组学生信息,首先需要创建一个自定义数据模型类:
```java
@Data
public class Student
4. Excel 模板填充
使用 EasyExcel 进行 Excel 模板填充需要两个步骤:1)准备 Excel 模板;2)使用 EasyExcel 进行数据填充。
首先,创建一个带有占位符的 Excel 模板,例如:

在这个模板中,我们使用 `{{name}}` 和 `{{age}}` 分别作为姓名和年龄的占位符。
然后,使用 EasyExcel 进行数据填充:
```java
InputStream is = new FileInputStream("template.xlsx");
OutputStream os = new FileOutputStream("filled.xlsx");
List<Map<String, Object>> data = new ArrayList<>();
Map<String, Object> row = new HashMap<>();
row.put("name", "张三");
row.put("age", 18);
data.add(row);
ExcelWriter writer = EasyExcel.write(os).withTemplate(is).build();
Sheet sheet = writer.getSheet();
sheet.setClazz(Map.class);
writer.fill(data, new FillConfig().forceNewRow());
writer.finish();
```
在上面的代码中,我们首先读取了 Excel 模板文件(即 `template.xlsx` 文件),然后将填充后的结果写入到 `filled.xlsx` 文件中。接着,定义了一组数据集合 `data`,其中每个元素都是一个 Map 对象,用于存储占位符与对应的数据值。在填充时,通过 `EasyExcel.write(os).withTemplate(is)` 方法指定输出流和模板文件,然后获取 Sheet 对象,并使用 `setClazz()` 方法将数据模型设置为 `Map` 类型。最后,通过 `writer.fill(data, new FillConfig().forceNewRow())` 方法实现数据填充,并调用 `writer.finish()` 方法关闭 ExcelWriter 对象。
5. 大批量数据读写
EasyExcel 还支持大批量数据的读写操作,以满足处理海量数据时的需求。
使用 EasyExcel 进行大批量数据读写的示例如下:
```java
// 读取大量数据
List<Student> students = EasyExcel.read(fileName, Student.class, new ReadHandler()).sheet().doReadSync();
// 写入大量数据
List<Student> data = ... // 待写入的数据集合
ExcelWriter writer = EasyExcel.write(fileName, Student.class).build();
WriteSheet sheet = EasyExcel.writerSheet().build();
writer.write(data, sheet);
writer.finish();
```
在上面的代码中,我们可以看到,EasyExcel 支持同步读取大量数据和异步读取大量数据,具体可根据需求选择对应的方法。在数据量较大时,建议使用异步方式读取数据,以避免阻塞主线程。另外,在写大量数据时,也需要注意内存占用问题,可以考虑采用分批次写入或使用流式写入等方式来优化性能。
总之,EasyExcel 是一个简单易用的 Java Excel 操作工具,可以方便地进行 Excel 文件的读写、模板填充等操作,并且支持多种数据源、复杂表头、大量数据读写等功能。可以说,EasyExcel 已经成为 Java 开发中 Excel 操作的首选工具之一。
猜你喜欢
- 2024-09-29 一日一技:使用XlsxWriter模块在Excel工作表中绘制组合图表
- 2024-09-29 Hutool Java工具类库导出Excel,超级简单
- 2024-09-29 有了这个开源工具后,我五点就下班了
- 2024-09-29 pandas写excel报错IllegalCharacterError解决方案
- 2024-09-29 python从入门到实践,文件读写与Excel操作
- 2024-09-29 Python读写EXCEL文件常用方法大全
- 2024-09-29 太棒了!Python和Excel过了这么久终于可以互通了
- 2024-09-29 EasyExcel实现Excel验证标红备注下载
- 2024-09-29 Python 操作 Excel 表格从简单到高级用法
- 2024-09-29 Excel和Python终于可以互通了(python怎么与excel衔接)
你 发表评论:
欢迎- 07-07Xiaomi Enters SUV Market with YU7 Launch, Targeting Tesla with Bold Pricing and High-Tech Features
- 07-07Black Sesame Maps Expansion Into Robotics With New Edge AI Strategy
- 07-07Wuhan's 'Black Tech' Powers China's Cross-Border Push with Niche Electronics and Scientific Firepower
- 07-07Maven 干货 全篇共:28232 字。预计阅读时间:110 分钟。建议收藏!
- 07-07IT运维必会的30个工具(it运维工具软件)
- 07-07开源项目有你需要的吗?(开源项目什么意思)
- 07-07自动化测试早就跑起来了,为什么测试管理还像在走路?
- 07-07Cursor 最强竞争对手来了,专治复杂大项目,免费一个月
- 最近发表
-
- Xiaomi Enters SUV Market with YU7 Launch, Targeting Tesla with Bold Pricing and High-Tech Features
- Black Sesame Maps Expansion Into Robotics With New Edge AI Strategy
- Wuhan's 'Black Tech' Powers China's Cross-Border Push with Niche Electronics and Scientific Firepower
- Maven 干货 全篇共:28232 字。预计阅读时间:110 分钟。建议收藏!
- IT运维必会的30个工具(it运维工具软件)
- 开源项目有你需要的吗?(开源项目什么意思)
- 自动化测试早就跑起来了,为什么测试管理还像在走路?
- Cursor 最强竞争对手来了,专治复杂大项目,免费一个月
- Cursor 太贵?这套「Cline+OpenRouter+Deepseek+Trae」组合拳更香
- 为什么没人真的用好RAG,坑都在哪里? 谈谈RAG技术架构的演进方向
- 标签列表
-
- ifneq (61)
- 字符串长度在线 (61)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)