EasyExcel自定义导出列和顺序实例代码
更新时间:2023年07月20日 15:42:42 作者:是攀不是潘
这篇文章主要给大家介绍了关于EasyExcel自定义导出列和顺序的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者工作具有一定的参考借鉴价值,需要的朋友可以参考下
EasyExcel 自定义导出列和顺序
该功能需要前后端进行衔接 。前端需要传输两个集合,后端可以封装到一个对象中进行接收
集合1: List headList
集合2: List columnList 【对应后端实体类需要导出的字段】
代码块
前端可选择导出的列数和顺序
1. 实体类
@Data public class ScenicAnalysis extends BaseEntity{ private static final long serialVersionUID = 1L; //需要导出的列的集合 private List<String> columnList; //需要导出的列的集合 private List<String> headList; }
2. 控制层
@PostMapping("/exportColumn") public void exportColumn(HttpServletResponse response, @RequestBody ScenicAnalysis scenicAnalysis) { scenicAnalysisService.exportColumn(response,scenicAnalysis); }
3. 方法层
public void exportColumn(HttpServletResponse response, ScenicAnalysis scenicAnalysis) { //根据自己的业务逻辑生成对应的List<Object>类型的集合 List<Object> list = new ArrayList<>(); try { response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); response.setCharacterEncoding("utf-8"); //控制 导出字段 未控制顺序 EasyExcel.write(response.getOutputStream(), ScenicAnalysis.class) .head(head(scenicAnalysis.getHeadList())) .includeColumnFiledNames(scenicAnalysis.getColumnList()) .sheet("模板") .doWrite(dataList(list,scenicAnalysis.getColumnList())); } catch (IOException e) { e.printStackTrace(); } }
4. 公共方法 (直接使用)
4.1 设置表头
/** * 设置Excel头 * @param headList Excel头信息 * @return */ private static List<List<String>> head(List<String> headList) { List<List<String>> list = new ArrayList<>(); for (String value : headList) { List<String> head = new ArrayList<>(); head.add(value); list.add(head); } return list; }
4.2 设置表格信息
/** * 设置表格信息 * @param dataList 查询出的数据 * @param fileList 需要显示的字段 * @return */ private static List<List<Object>> dataList(List<Object> dataList, List<String> fileList) { List<List<Object>> list = new ArrayList<>(); for (Object person : dataList) { List<Object> data = new ArrayList<>(); for (String fieldName : fileList) { /**通过反射根据需要显示的字段,获取对应的属性值*/ data.add(getFieldValue(fieldName, person)); } list.add(data); } return list; }
4.3 根据字段生成对应的get方法
/** * 根据传入的字段获取对应的get方法,如name,对应的getName方法 * @param fieldName 字段名 * @param person 对象 * @return */ private static Object getFieldValue(String fieldName, Object person) { try { String firstLetter = fieldName.substring(0, 1).toUpperCase(); String getter = "get" + firstLetter + fieldName.substring(1); Method method = person.getClass().getMethod(getter); return method.invoke(person); } catch (Exception e) { return null; } }
以上可根据自己的业务需求进行相应调整
导出结果
总结
到此这篇关于EasyExcel自定义导出列和顺序的文章就介绍到这了,更多相关EasyExcel自定义导出内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Java String方法获取字符出现次数及字符最大相同部分示例
这篇文章主要介绍了Java String方法获取字符出现次数及字符最大相同部分,涉及java字符串的遍历、比较、计算等相关操作技巧,需要的朋友可以参考下2017-09-09java.lang.ExceptionInInitializerError初始化程序中的异常错误的解决
java.lang.ExceptionInInitializerError 异常在 Java 中表示一个错误,该错误发生在尝试初始化一个类的静态变量、静态代码块或枚举常量时,本文就来介绍并解决一下,感兴趣的可以了解一下2024-05-05Spring的编程式事务TransactionTemplate的用法详解
TransactionTemplate提供了一种在代码中进行编程式事务管理的方式,使开发人员能够在方法级别定义事务的开始和结束点,本文介绍了Spring框架中TransactionTemplate的用法,感兴趣的朋友跟随小编一起看看吧2023-07-07
最新评论