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

在这个模板中,我们使用 `{{name}}` 和 `{{age}}` 分别作为姓名和年龄的占位符。
然后,使用 EasyExcel 进行数据填充:
InputStream is = new FileInputStream("template.xlsx");
OutputStream os = new FileOutputStream("filled.xlsx");
List> data = new ArrayList<>();
Map 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 进行大批量数据读写的示例如下:
// 读取大量数据
List students = EasyExcel.read(fileName, Student.class, new ReadHandler()).sheet().doReadSync();
// 写入大量数据
List data = ... // 待写入的数据集合
ExcelWriter writer = EasyExcel.write(fileName, Student.class).build();
WriteSheet sheet = EasyExcel.writerSheet().build();
writer.write(data, sheet);
在上面的代码中,我们可以看到,EasyExcel 支持同步读取大量数据和异步读取大量数据,具体可根据需求选择对应的方法。在数据量较大时,建议使用异步方式读取数据,以避免阻塞主线程。另外,在写大量数据时,也需要注意内存占用问题,可以考虑采用分批次写入或使用流式写入等方式来优化性能。
总之,EasyExcel 是一个简单易用的 Java Excel 操作工具,可以方便地进行 Excel 文件的读写、模板填充等操作,并且支持多种数据源、复杂表头、大量数据读写等功能。可以说,EasyExcel 已经成为 Java 开发中 Excel 操作的首选工具之一。