0


EasyExcel 自定义导出列和顺序

EasyExcel 自定义导出列和顺序

该功能需要前后端进行衔接 。前端需要传输两个集合,后端可以封装到一个对象中进行接收

集合1: List headList
在这里插入图片描述
集合2: List columnList 【对应后端实体类需要导出的字段】
在这里插入图片描述

代码块

前端可选择导出的列数和顺序

在这里插入图片描述

1. 实体类

    @Data
    publicclassScenicAnalysisextendsBaseEntity{privatestatic final long serialVersionUID = 1L;//需要导出的列的集合private List<String> columnList;//需要导出的列的集合private List<String> headList;}

2. 控制层

    @PostMapping("/exportColumn")publicvoidexportColumn(HttpServletResponse response, @RequestBody ScenicAnalysis scenicAnalysis){
        scenicAnalysisService.exportColumn(response,scenicAnalysis);}

3. 方法层

publicvoidexportColumn(HttpServletResponse response, ScenicAnalysis scenicAnalysis){//根据自己的业务逻辑生成对应的List<Object>类型的集合
        List<Object> list =newArrayList<>();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
   */privatestatic List<List<String>>head(List<String> headList){
      List<List<String>> list =newArrayList<>();for(String value : headList){
          List<String> head =newArrayList<>();
          head.add(value);
          list.add(head);}return list;}

4.2 设置表格信息

/**
  * 设置表格信息
  * @param dataList  查询出的数据
  * @param fileList  需要显示的字段
  * @return
  */privatestatic List<List<Object>>dataList(List<Object> dataList, List<String> fileList){
     List<List<Object>> list =newArrayList<>();for(Object person : dataList){
         List<Object> data =newArrayList<>();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
   */privatestatic 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){returnnull;}}

以上可根据自己的业务需求进行相应调整

导出结果

在这里插入图片描述

标签: excel javascript 前端

本文转载自: https://blog.csdn.net/nonita/article/details/129176195
版权归原作者 是攀不是潘 所有, 如有侵权,请联系我们删除。

“EasyExcel 自定义导出列和顺序”的评论:

还没有评论