EasyExcel模板导出
## 简介 记一次使用EasyExcel模板导出文件的操作。
渲染中...
## 简介
记一次使用EasyExcel模板导出文件的操作。
<!-- more -->
## 模板
之所以使用模板导出,是因为导出的文件内容格式较为复杂。虽然看起来只是简单的数据列表,但表头十分复杂,其中有多级表头,且部分表头的级别各不相同,所以为了更简单方便的实现该导出功能,选择使用模板导出的方式。
表头部分示例如下:

本次功能的数据层面只是简单的列表,一列即对应一个数据属性字段,所以采用简单的 `List` 数据即可,模板写法如下:

其中第6行即时实体字段映射,以 `{.a}` 为例:`{.}` 是固定写法,表示从 `List` 数据中遍历读取数据,`a` 表示数据的字段属性名是 `a`。
> 其他模板写法请自行了解~
## 代码
本次使用的maven依赖版本如下:
```xml
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.1.2</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.2</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.1.1</version>
</dependency>
```
有了模板文件之后,只需要使用代码读取到该模板和数据,调用`EasyExcel`的工具方法即可,方法封装如下:
```java
/**
* @param inputStream-模板文件的输入流
* @param outputStream-输出文件的输出流
* @param data-数据集合
*/
public static <T> void writeExcel(InputStream inputStream, OutputStream , List<T> data) {
EasyExcel.write(outputStream)
.excelType(ExcelTypeEnum.XLSX)
.withTemplate(inputStream)
.sheet()
.doFill(data);
}
```
> 请自行实现模板读取、数据封装等前置代码~
## 吐槽
`doFill(data)` 方法是将数据填入模板文件的方法,`doWrite(data)`是将数据写入文件的方法,所以此处应该使用 `doFill` ,注意避坑,有选择使用!
PS:EasyExcel官方的文档真垃圾!END
评论
登录后查看和发表评论
前往登录