在日常工作中,我们经常需要生成 Excel 报表,其中一个复杂场景就是多 Sheet 表格的填充。使用阿里巴巴的 EasyExcel 库可以简化这个过程。本文将介绍如何使用 EasyExcel 实现多 Sheet 的循环填充。
在开始之前,请确保您的项目已经引入了 EasyExcel 依赖。如果没有,请在 pom.xml
文件中添加以下依赖:
xml<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>${newest version}</version>
</dependency>
首先,我们创建一个模型类,用于存储需要写入 Excel 的数据。
javapublic class User {
private String name;
private Integer age;
private String email;
// getters and setters
}
接下来,我们编写多 Sheet 循环填充的逻辑。在每个 Sheet 中写入不同的数据。
javaimport com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
import java.util.ArrayList;
import java.util.List;
public class MultiSheetWriteExample {
public static void main(String[] args) {
String fileName = "multiSheetExample.xlsx";
ExcelWriter excelWriter = EasyExcel.write(fileName).build();
// Sheet 数据准备
List<List<User>> sheetData = new ArrayList<>();
for (int i = 0; i < 3; i++) {
List<User> data = new ArrayList<>();
for (int j = 0; j < 10; j++) {
User user = new User();
user.setName("User" + i + j);
user.setAge(20 + j);
user.setEmail("user" + i + j + "@example.com");
data.add(user);
}
sheetData.add(data);
}
// 写入多个 Sheet
for (int i = 0; i < sheetData.size(); i++) {
WriteSheet writeSheet = EasyExcel.writerSheet(i, "Sheet" + (i + 1)).head(User.class).build();
excelWriter.write(sheetData.get(i), writeSheet);
}
// 关闭 ExcelWriter
excelWriter.finish();
}
}
在这个示例中,我们创建了三个 Sheet,每个 Sheet 都填充了不同的用户数据。EasyExcel.writerSheet
方法用于创建新的 Sheet,write
方法用于将数据写入当前 Sheet。
在实际应用中,数据可能来自数据库或其他外部数据源。我们可以将数据源抽象出来,增强代码的灵活性。
javaimport com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
import java.util.List;
public class MultiSheetWriteExample {
public static void main(String[] args) {
String fileName = "multiSheetExample.xlsx";
ExcelWriter excelWriter = EasyExcel.write(fileName).build();
// 从数据源获取 Sheet 数据
List<List<User>> sheetData = fetchDataFromDataSource();
// 写入多个 Sheet
for (int i = 0; i < sheetData.size(); i++) {
WriteSheet writeSheet = EasyExcel.writerSheet(i, "Sheet" + (i + 1)).head(User.class).build();
excelWriter.write(sheetData.get(i), writeSheet);
}
// 关闭 ExcelWriter
excelWriter.finish();
}
private static List<List<User>> fetchDataFromDataSource() {
// 模拟从数据库或其他数据源获取数据
// 这里简单返回之前的数据示例
List<List<User>> sheetData = new ArrayList<>();
for (int i = 0; i < 3; i++) {
List<User> data = new ArrayList<>();
for (int j = 0; j < 10; j++) {
User user = new User();
user.setName("User" + i + j);
user.setAge(20 + j);
user.setEmail("user" + i + j + "@example.com");
data.add(user);
}
sheetData.add(data);
}
return sheetData;
}
}
这样做可以让数据的获取与 Excel 的生成逻辑分离,使得代码更加清晰和可维护。
通过使用 EasyExcel,我们可以轻松实现多 Sheet 表格的循环填充。本文介绍了如何创建基本的模型类,并通过循环将不同的数据写入多个 Sheet。这样的实现不仅提高了代码的可读性和维护性,也使得生成复杂的 Excel 报表变得更加简单。
希望本文能帮助你更好地掌握 EasyExcel 的多 Sheet 填充技巧,在实际工作中提升效率。如果你有更多关于 EasyExcel 的使用经验或问题,欢迎在评论区分享。
通过以上学习和实践,您应该能够轻松地在项目中实现多 Sheet 循环填充,为数据展示提供更好的解决方案。