亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

EasyExcel自定義導(dǎo)出列和順序?qū)嵗a

 更新時間:2023年07月20日 15:42:42   作者:是攀不是潘  
這篇文章主要給大家介紹了關(guān)于EasyExcel自定義導(dǎo)出列和順序的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者工作具有一定的參考借鑒價值,需要的朋友可以參考下

EasyExcel 自定義導(dǎo)出列和順序

該功能需要前后端進行銜接 。前端需要傳輸兩個集合,后端可以封裝到一個對象中進行接收

集合1: List headList

集合2: List columnList 【對應(yīng)后端實體類需要導(dǎo)出的字段】

代碼塊

前端可選擇導(dǎo)出的列數(shù)和順序

1. 實體類

@Data
	public class ScenicAnalysis extends BaseEntity{
	    private static final long serialVersionUID = 1L;
	    //需要導(dǎo)出的列的集合
	    private List<String> columnList;
	    //需要導(dǎo)出的列的集合
	    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) {
        //根據(jù)自己的業(yè)務(wù)邏輯生成對應(yīng)的List<Object>類型的集合
        List<Object> list = new ArrayList<>();
        try {
            response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
            response.setCharacterEncoding("utf-8");
            //控制 導(dǎo)出字段 未控制順序
            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 設(shè)置表頭

    /**
   * 設(shè)置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 設(shè)置表格信息

  /**
  * 設(shè)置表格信息
  * @param dataList  查詢出的數(shù)據(jù)
  * @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) {
             /**通過反射根據(jù)需要顯示的字段,獲取對應(yīng)的屬性值*/
             data.add(getFieldValue(fieldName, person));
         }
         list.add(data);
     }
     return list;
 }

4.3 根據(jù)字段生成對應(yīng)的get方法

    /**
   * 根據(jù)傳入的字段獲取對應(yīng)的get方法,如name,對應(yīng)的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;
      }
  }

以上可根據(jù)自己的業(yè)務(wù)需求進行相應(yīng)調(diào)整

導(dǎo)出結(jié)果

總結(jié)

到此這篇關(guān)于EasyExcel自定義導(dǎo)出列和順序的文章就介紹到這了,更多相關(guān)EasyExcel自定義導(dǎo)出內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java中特殊運算符及其應(yīng)用詳解

    Java中特殊運算符及其應(yīng)用詳解

    當(dāng)涉及位操作和位級運算時,Java?提供了一組特殊的運算符,即左移(<<)和右移(>>)運算符,下面小編就帶大家深入了解一下它們的具體應(yīng)用吧
    2023-08-08
  • Java語言中的自定義類加載器實例解析

    Java語言中的自定義類加載器實例解析

    這篇文章主要介紹了Java語言中的自定義類加載器實例解析,分享了相關(guān)代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下
    2018-02-02
  • Java設(shè)計模式之中介模式

    Java設(shè)計模式之中介模式

    這篇文章主要介紹了Java設(shè)計模式之中介模式,中介模式(Mediator?Pattern),屬于行為型設(shè)計模式,目的是把系統(tǒng)中對象之間的調(diào)用關(guān)系從一對多轉(zhuǎn)變成一對一的調(diào)用關(guān)系,以此來降低多個對象和類之間的通信復(fù)雜性,需要的朋友可以參考下
    2023-12-12
  • java?mybatis如何操作postgresql?array數(shù)組類型

    java?mybatis如何操作postgresql?array數(shù)組類型

    這篇文章主要介紹了java?mybatis如何操作postgresql?array數(shù)組類型,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • Java并發(fā)編程示例(二):獲取和設(shè)置線程信息

    Java并發(fā)編程示例(二):獲取和設(shè)置線程信息

    這篇文章主要介紹了Java并發(fā)編程示例(二):獲取和設(shè)置線程信息,本文是系列文章的第二篇,本文著重講解Thread類的幾個重要屬性,需要的朋友可以參考下
    2014-12-12
  • WIN7系統(tǒng)JavaEE(java)環(huán)境配置教程(一)

    WIN7系統(tǒng)JavaEE(java)環(huán)境配置教程(一)

    這篇文章主要介紹了WIN7系統(tǒng)JavaEE(java+tomcat7+Eclipse)環(huán)境配置教程,本文重點在于java配置,感興趣的小伙伴們可以參考一下
    2016-06-06
  • jdbcTemplate使用方法實例解析

    jdbcTemplate使用方法實例解析

    這篇文章主要介紹了jdbcTemplate使用方法實例解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-02-02
  • JVM類加載機制原理及用法解析

    JVM類加載機制原理及用法解析

    這篇文章主要介紹了JVM類加載機制原理及用法解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-10-10
  • Java AtomicInteger類使用方法實例講解

    Java AtomicInteger類使用方法實例講解

    這篇文章主要介紹了Java AtomicInteger類使用方法實例講解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-06-06
  • 深入淺析Java Object Serialization與 Hadoop 序列化

    深入淺析Java Object Serialization與 Hadoop 序列化

    序列化是指將結(jié)構(gòu)化對象轉(zhuǎn)化為字節(jié)流以便在網(wǎng)絡(luò)上傳輸或者寫到磁盤永久存儲的過程。下面通過本文給大家分享Java Object Serialization與 Hadoop 序列化,需要的朋友可以參考下
    2017-06-06

最新評論