2024-06-24
JAVA
0

目录

使用 EasyExcel 实现多 Sheet 循环填充
一、前置准备
二、创建基础模型类
三、创建多 Sheet 填充的逻辑
四、优化和扩展
五、总结
扩展阅读

使用 EasyExcel 实现多 Sheet 循环填充

在日常工作中,我们经常需要生成 Excel 报表,其中一个复杂场景就是多 Sheet 表格的填充。使用阿里巴巴的 EasyExcel 库可以简化这个过程。本文将介绍如何使用 EasyExcel 实现多 Sheet 的循环填充。

一、前置准备

在开始之前,请确保您的项目已经引入了 EasyExcel 依赖。如果没有,请在 pom.xml 文件中添加以下依赖:

xml
<dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>${newest version}</version> </dependency>

二、创建基础模型类

首先,我们创建一个模型类,用于存储需要写入 Excel 的数据。

java
public class User { private String name; private Integer age; private String email; // getters and setters }

三、创建多 Sheet 填充的逻辑

接下来,我们编写多 Sheet 循环填充的逻辑。在每个 Sheet 中写入不同的数据。

java
import 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。

四、优化和扩展

在实际应用中,数据可能来自数据库或其他外部数据源。我们可以将数据源抽象出来,增强代码的灵活性。

java
import 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 循环填充,为数据展示提供更好的解决方案。