使用 EasyExcel导出list类型的数据
时间: 2024-05-07 12:18:48 浏览: 259
可以使用阿里巴巴的 EasyExcel 库进行导出,具体步骤如下:
1. 引入 EasyExcel 依赖
```xml
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.2.10</version>
</dependency>
```
2. 创建数据实体类
```java
public class User {
@ExcelProperty("姓名")
private String name;
@ExcelProperty("年龄")
private int age;
@ExcelProperty(value = "爱好", converter = HobbiesConverter.class)
private List<String> hobbies;
// getter/setter 省略
}
```
其中,`@ExcelProperty` 注解用于标识导出的表头和数据列,`converter` 属性用于指定导出时该字段的转换器,这里我们自定义一个转换器用于将 List 类型的数据转换为逗号分隔的字符串。
```java
public class HobbiesConverter implements Converter<List<String>> {
@Override
public Class<List<String>> supportJavaTypeKey() {
return (Class<List<String>>) (Object) List.class;
}
@Override
public CellData<String> convertToExcelData(List<String> value, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) {
return new CellData<>(String.join(",", value));
}
@Override
public List<String> convertToJavaData(CellData cellData, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) {
return Arrays.asList(cellData.getStringValue().split(","));
}
}
```
3. 构造导出数据
```java
List<User> userList = new ArrayList<>();
userList.add(new User("张三", 20, Arrays.asList("篮球", "足球")));
userList.add(new User("李四", 22, Arrays.asList("游泳", "唱歌", "跳舞")));
```
4. 执行导出操作
```java
// 导出文件路径
String path = "user.xlsx";
// 配置导出参数
ExcelWriter writer = EasyExcel.write(path, User.class).build();
WriteSheet sheet = EasyExcel.writerSheet("用户信息").build();
writer.write(userList, sheet);
writer.finish();
```
以上操作就可以将 List 类型的数据导出到 Excel 文件中,其中 `writerSheet` 方法用于指定工作表名称,`write` 方法用于写入数据,`finish` 方法用于关闭流。
注意:如果数据量较大,可以使用 `writeWithTemplate` 方法配合模板文件进行导出,避免内存溢出等问题。
阅读全文