前面几篇文章测试过用easyexcel生成动态表头,动态样式。特别是动态表头以及下面数据列表与表头字段的对应是采用注解方式实现的。但在实际工作中,有些到处是灵活生成的,也就是说对于同一个类,在不同的场景下,导出的字段,以及各自的顺序是完全不一样的。这个时候注解也就失去灵活性了。所以直接用编程方式处理数据字段对于各表头的顺序才是好的处理方式.

回顾一下前面写的类,在生成多表头时,为了保证表头与数据的对应,用到了注解 @ExcelProperty(value="名称",order = 0) 里面的order 就是表示位置,当然用index也是可以的。这种做法不够灵活,在我上面提到的场景下,完全无法满足要求,甚至位置到处错乱. 这个时候需要自定需要从列表里展示的字段,然后得到各自的值,按顺序加入到list中。这个顺序与你自定义表头的顺序一致。用反射来实现.public List> getExportListDatas(List list, List includeColumns) {

List> listData = new ArrayList<>();

if (CollectionUtils.isEmpty(list)) {

return listData;

}

try {

for (T t : list) {

List rowLine = new ArrayList<>();

for(String s : includeColumns) {

String getMethodName = "get" + s.substring(0,1).toUpperCase() + s.substring(1);

Class clazz = t.getClass();

Method getMethod;

getMethod = clazz.getMethod(getMethodName, new Class[]{} );

Object value = getMethod.invoke(t, new Object[]{});

rowLine.add(value);

}

listData.add(rowLine);

}

}catch (Exception e) {

log.error("生成EXCEL错误:{}", e.getMessage());

}

return listData;

}

很明显,这部分代码,就是将 List转换成按顺序的的 List> ,然后我们把这个数据与对应的自定义头传入到 easyexcel的导出参数中:EasyExcel.write(filePath)

.head(headerList)

.sheet(sheetName).doWrite(datas);

这里面的filePath是导出excel 的路径, headerList 是自定义 表头, datas 就是上面的List> 对象,数据顺序刚好与headList对应, 这样就很灵活的实现了自定义表土与数据的顺序展示.

参考

easyexcel 检查表头是否匹配_利用easyexcel生成excel文件-自定义表头与数据栏对应的处理方式...相关推荐

  1. php写excel文件_利用PHPExcel实现Excel文件的写入和读取

    作为一个原本的Java党,用过PHP才知道,原来对于Excel文件的写入和读取原来可以这么简单! 利用PHP实现对于Excel的读取,主要借助于PHPExcel插件来完成. PHPExcel下载地址: ...

  2. java poi 生成excel_利用POI生成EXCEL文件的方法实例

    一.背景 Apache POI 是创建和维护操作各种符合Office Open XML(OOXML)标准和微软的OLE 2复合文档格式(OLE2)的Java API.用它可以使用Java读取和创建,修 ...

  3. excel中用java语言_利用 JAVA 操作 EXCEL 文件

    Java Excel 是一开放源码项目,通过它 Java 开发人员可以读取 Excel 文件的内容.创建新的 Excel 文件.更新已经存在的 Excel 文件.使用该 API 非 Windows 操 ...

  4. python生成exe运行慢_利用pyinstaller生成exe文件碰到的一些问题及解决方法

    在"开源图像标注工具labelme的安装使用及汉化"这篇博客中,使用pyinstaller将labelme项目的入口python文件main.py打包,生成了main.exe文件, ...

  5. java 读取excel 合并单元格_利用java读写Excel文件、合并单元格

    一般的页眉页脚都分为三个部分,左,中,右三部分,利用如下代码可实现插入页眉页脚 java 代码publicstaticvoidsetHeader(WritableSheet dataSheet,Str ...

  6. java导出excel设置行高列宽_使用POI生成Excel文件,可以自动调整excel列宽

    //autoSizeColumn()方法自动调整excel列宽 importjava.io.FileOutputStream; importorg.apache.poi.hssf.usermodel. ...

  7. java excel 导入 加校验_Java 利用POI进行excel文件导入时校验数据,并且追加错误批注...

    首先拿到前端file控件上传的excel文件,到后台接收!拿到excel这就不多说了网上很多demo的,下面直接说校验单元格追加批注信息的 private void setpz(Workbook wo ...

  8. EasyExcel生成带下拉列表或二级级联列表的Excel模版+自定义校验导入数据(附仓库)

    EasyExcel生成带下拉列表或二级级联列表的Excel模版+自定义校验导入数据(附仓库) 目录 EasyExcel生成带下拉列表或二级级联列表的Excel模版+自定义校验导入数据(附仓库) 仓库 ...

  9. java使用easyExcel生成excel文件直接写入邮件附件并发送

    目录 一:引入pom依赖 二:完整代码如下(真实可用) 本文章主要是讲述如何使用EasyExcel生成excel文件,并将文件写入到邮件附件中进行邮件发送. 一:引入pom依赖 <!-- 邮件 ...

最新文章

  1. 机器学习+优化问题的种类、如何优化、凸优化、非凸优化、对偶问题、KKT条件
  2. 无人车巨头每天都在做相同的事情:不惜血本做高精地图是为何?
  3. SAP MM 移动类型-入门篇
  4. dubbo应用程序的单元测试环境搭建(springtest,powermock,mockito)
  5. python 消息队列、异步分布式
  6. FFMPEG结构体分析之AVCodec
  7. mysql做主从复制配置案例
  8. NXP S32K144开发(一)环境搭建和新建工程
  9. Git笔记(38) 凭证存储
  10. python对象列表转换为字典_python实现class对象转换成json/字典的方法
  11. 转 文件路径相关的字符串操作
  12. 的优先级大小_cache也有优先级
  13. 【PAT刷题甲级】部分笔记1065-1155~(下)
  14. MMDetection CenterNet 源码解析
  15. android sqlite同时读写,SQLite同时读写
  16. poj 1129 Channel Allocation——四色定理
  17. Vue keep-alive和activated的用法
  18. 2D和3D的对比,不用犹豫,三维设计是行业未来必然趋势!
  19. WIFI设备配网之微信小程序开发AP配网
  20. Android全面屏状态栏适配

热门文章

  1. S3C2410中文芯片手册-11.串口
  2. Java工具-根据出生年月日计算出年龄
  3. gocron mysql_[日常] gocron源码阅读-使用go mod管理依赖源码启动gocron
  4. 分布式高频量化交易系统架构讲解(企业版,期货ctp,股票xtp,数字货币,附全部源码)(值得收藏)
  5. 【ABAP】采购订单行项目 税码 自动默认
  6. eclipse制作app入门教程
  7. php中文分隔符,php断句无乱码,PHP根据分隔符断句,中英文无乱码
  8. 【office2010】利用尾注添加参考文献
  9. 实验六 文本串的加密解密
  10. fortran——实数和复数(矢量)运算