记一次使用EasyExcel模板导出文件的操作。
之所以使用模板导出,是因为导出的文件内容格式较为复杂。虽然看起来只是简单的数据列表,但表头较复杂,其中有多级表头,且部分表头级别各部相同,所以为了更简单方便的实现该导出功能,选择使用模板导出的方式。
表头部分示例如下:
数据层面只是简单的列表,一列即时一个数据字段,所以采用简单的 List
数据即可,模板写法如下:
其中第6行即时实体字段映射,以 {.a}
为例,固定写法 {.}
表示从 List
数据中遍历读取数据,数据的Key是 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)
是将数据写入文件的方法,所以注意壁坑,选择使用!
PS:EasyExcel官方的文档真垃圾!
本文作者:DingDangDog
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!