easyExcel占位符导出一个集合对象再加一个集合
时间: 2024-05-14 16:14:44 浏览: 139
使用阿里巴巴的EasyExcel库将数据和图片导出到一个Excel文件
对象
假设我们有一个集合对象 `List<User>`,其中 `User` 包含属性 `id`、`name`、`age`,同时每个 `User` 对象还包含一个集合属性 `List<Order>`,其中 `Order` 包含属性 `orderId`、`orderName`。
我们希望使用 easyExcel 将这个集合对象导出到 Excel 中,同时需要将每个 `User` 对象中的 `List<Order>` 集合属性也导出到 Excel 中。
下面是示例代码:
```java
public class User {
private Integer id;
private String name;
private Integer age;
private List<Order> orders;
// 省略 getter/setter 方法
}
public class Order {
private Integer orderId;
private String orderName;
// 省略 getter/setter 方法
}
public class UserExcelVO {
@ExcelProperty("ID")
private Integer id;
@ExcelProperty("姓名")
private String name;
@ExcelProperty("年龄")
private Integer age;
@ExcelProperty("订单ID")
private Integer orderId;
@ExcelProperty("订单名称")
private String orderName;
// 省略 getter/setter 方法
}
// 导出 Excel
public void exportExcel(List<User> userList, HttpServletResponse response) throws IOException {
List<UserExcelVO> excelDataList = new ArrayList<>();
for (User user : userList) {
if (CollectionUtils.isEmpty(user.getOrders())) {
// 如果 orders 集合为空,则只导出 User 对象的属性
excelDataList.add(new UserExcelVO(user.getId(), user.getName(), user.getAge(), null, null));
} else {
// 如果 orders 集合不为空,则将 User 对象的属性和 orders 集合的属性一起导出
for (Order order : user.getOrders()) {
excelDataList.add(new UserExcelVO(user.getId(), user.getName(), user.getAge(), order.getOrderId(), order.getOrderName()));
}
}
}
EasyExcel.write(response.getOutputStream(), UserExcelVO.class).sheet("sheet1").doWrite(excelDataList);
}
```
这里我们定义了一个 `UserExcelVO` 类,用于存储导出到 Excel 中的数据。在导出的过程中,我们先判断每个 `User` 对象中的 `List<Order>` 集合是否为空,如果为空则只导出 `User` 对象的属性;如果不为空,则将 `User` 对象的属性和 `List<Order>` 集合的属性一起导出。最后使用 `EasyExcel.write()` 方法将数据导出到 Excel 中。
阅读全文