文章目录
需求excel可实现个性化导出同时配置默认导出
接口1忽略某些字段采用默认模板导出
java
public static <T> void exportExcelExclude(
HttpServletResponse response, //客户端响应
String sheetName, //表单名
Class clazz, //EO类
List<T> data) {//数据
}
EXCEL模板配置
无需配置,按照EO
默认横向书写List中的某个数据,纵向书写整个List
优点
- 表头无需自定义,EO文件 中ExcelProperty即可指定表头单列名称,开发便捷高效
缺点
- 丰富型个性化表格样式无法设置
思路
- 设置响应内容(HttpServletResponse,sheetName)响应给客户端文件名EXCEL文件
- 通过排除注解
ExcelExclude
是否存在来过滤,得到导出字段excludeList - EasyExcel写出文件到客户端
核心代码
java
EasyExcel.write(response.getOutputStream(), clazz).excludeColumnFiledNames(excludeList)).sheet(sheetName).doWrite(data);
接口2填充指定内容到指定模板导出
java
public static <T> void exportFillExcel(
HttpServletResponse response, //客户端响应对象
String sheetName,//表单名
InputStream templateFileStream,//模板文件流
List<T> list,//数据A
Map<String, Object> map) {//数据B
}
思路
- 设置响应内容(HttpServletResponse,sheetName)传给客户端文件名EXCEL文件
构造器
(创建型模式)基于模板文件构建输出流EXCEL写
对象- 创建WriteSheet 表写对象 ------真正的写者
- 设置写Sheet 数据表配置方式 fillConfig 数据展现样式
横纵方向
- EXCEL
写
对象基于传入的两种数据使用Sheet 写对象写到客户端
核心代码
java
InputStream template = this.getClass().getClassLoader().getResourceAsStream(XXX.XLS);
excelWriter.fill(list, fillConfig, writeSheet);
excelWriter.fill(map, writeSheet);
EXCEL模板配置
忽略EO,仅读入数据、数据不同 模板文件配置书写有区别
- List传入数据
java
{.propertyName}
- Map传入数据
java
{keyName}
优点
- 满足个性化表单导出,下一步可作为银行商票、销售、物流单据等内容进行打印操作
缺点
- 模板文件所有样式都将被读入,对于大型商用模板,增加CODER时间成本,故预设样式需指定专员提供,
- 在List书写数据时任然按照上述方式,单条可指定任意位置填充,大量数据需写Sheet 数据表配置方式 或写入Map