EasyPoi导出List集合、Collection集合
官网:http://doc.wupaas.com/docs/easypoi/easypoi-1c0u4mo8p4ro8
导出List集合:
首先在实体类user中添加爱好字段
使用@ExcelIgnore注解,忽略原始爱好字段的list集合,然后定义一个新的String类型的字符串,用于存储list集合的元素,修改get方法:创建一个StringBuilder对象,用来拼接字符串并且用分号隔开。
然后将爱好信息写入到指定的excel表格中
@Test
public void testExport() throws IOException {
//获取数据
List<User> list = userList();
//将数据导出到Excel
//参数1:ExportParams对象 参数2:导出的类型 参数3:导出的数据集合
Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams("用户信息表", "用户excel表"), User.class, list);
//使用流将excel写入到指定的位置
FileOutputStream outputStream = new FileOutputStream("C:/Users/1/Desktop/easyPoi/easyExcel.xls");//指定写出的位置
workbook.write(outputStream);//将数据输出
//关闭流
workbook.close();
outputStream.close();
}
导出Collection集合:
在导出collection集合前,先来导出对象。
首先创建一个UserCard实体类:
@ExcelTarget("card")
@Data
public class UserCard implements Serializable {
@Excel(name = "身份证号",width = 40.0)
private String cardNum;
@Excel(name="用户籍贯",width = 40.0)
private String address;
}
同样该实体来也要实现Serializable,并且是@ExcelTarget注解声明,类中字段使用@Excel声明
然后在User实体类中声明UserCard对象:
@ExcelEntity//导出对象数据 一对一关系
private UserCard userCard;
此处使用@ExcelEntity注解(该注解表示一个继续深入导出的实体,但他没有太多的实际意义,只是告诉系统这个对象里面同样有导出的字段)
在测试类中设置UserCard对象字段的相关信息
//用户身份信息
UserCard card = new UserCard();
card.setCardNum("123456789012345678");
card.setAddress("山东省淄博市高青县");
user.setUserCard(card);
然后导出即可。
在导出collection集合时步骤和导出对象数据基本相同,只不过导出的对象数据是一对一的关系,而导出的集合数据是一对多的关系,因此在User实体类中需要使用@ExcelCollection注解标注(该注解表示一个集合,主要针对一对多的导出,比如一个老师对应多个科目,科目就可以用集合表示)
@ExcelCollection(name = "用户订单表") //导出对象集合数据 一对多关系
private List<UserOrder> userOrders;
测试类中:
//用户订单信息
List<UserOrder> ordersList = new ArrayList<>();
ordersList.add(new UserOrder("12","订单01"));
ordersList.add(new UserOrder("13","订单02"));
ordersList.add(new UserOrder("14","订单03"));
user.setUserOrders(ordersList);
然后将相关信息导出: