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

Java導出excel時合并同一列中相同內(nèi)容的行思路詳解

 更新時間:2018年06月07日 14:36:41   作者:HPUCL  
這篇文章主要介紹了Java導出excel時合并同一列中相同內(nèi)容的行,需要的朋友可以參考下

一、有時候?qū)С鯡xcel時需要按類別導出,一大類下好幾個小類,小類下又有好幾個小小類,就像下圖:

要實現(xiàn)這個也不難,

思路如下:按照大類來循環(huán),如上就是按照張江校區(qū)、徐匯校區(qū)、臨港校區(qū)三個大類循環(huán),然后再處理小類,因為本例小小類不涉及合并,所以只涉及處理小類,如果需要處理小小類,還需要在處理一下,具體實現(xiàn)原理同小類;

      每次循環(huán)時記錄下此次循環(huán)的房屋類型和上次循環(huán)的房屋類型,兩者相同時,要合并的結(jié)束行++,否者,說明這個房屋類型已經(jīng)循環(huán)完畢(前提是各類型都按順序order by 了,保證相同類型相鄰),開始融合。具體實現(xiàn)如下:

二、實現(xiàn)代碼,具體思路已經(jīng)在注釋中了

 public void expStatistics(String filePath,String campuscode) {
    try {
      WritableWorkbook wwb = Workbook.createWorkbook(new File(filePath));
      JxlFormatUtil Jfu = new JxlFormatUtil();
      WritableSheet ws = wwb.createSheet("房屋報表統(tǒng)計", 0);
      String[] tableHead = {"校區(qū)名稱:20","房屋類型:30","房屋用途:30","使用面積(㎡):20"};
      for (int i = 0; i < tableHead.length; i++) {//每一列的標題樣式
        ws.addCell(new Label(i, 0, tableHead[i].split(":")[0], JxlFormatUtil.wcHead));
        ws.setColumnView(i, Integer.valueOf(tableHead[i].split(":")[1]));
      }
      int col = 1;//從第1行開始
      //以下變量用來融合相同內(nèi)容 的行
      int perCol = col;
      String perPurpose = "";//上一個用途類型
      String purpose = "";//當前用途類型
      int startMergeCol = 1;//要融合的第一行
      int endMergeCol = 0;//要融合的最后行
      boolean flag = true;//用來記錄是否是第一次循環(huán)
      //根據(jù)搜索條件導出
      List<FcxtCampus> campusList = new ArrayList<FcxtCampus>();
      if(null != campuscode && !"".equals(campuscode)){
        campusList = campusdao.findCampusByCode(campuscode);
      }else {
        campusList =campusdao.findCampus();
      }
      for (FcxtCampus campus : campusList) {
        List<FcxtBuild> builds = builddao.statisticsBuilds(campus.getCampuscode());//獲取所有房屋信息
        if(null != builds && builds.size() > 0){
          for (FcxtBuild build : builds) {
            int row = 0;//從第0列開始
            ws.addCell(new Label(row++, col, campus.getCampusname(), JxlFormatUtil.wcCenter));
            purpose = build.getUsefulpurpose();
            if(flag){//如果是第一次循環(huán),將perPurpose初始化,以便后面的第一次判斷
              perPurpose = purpose;
              flag = false;
            }
            ws.addCell(new Label(row++, col, FcxtBuild.BUILD_USEFULPURPOSE.get(build.getUsefulpurpose()), JxlFormatUtil.wcCenter));
            if(purpose.equals(perPurpose)){
              endMergeCol++;
            }else{//兩者不相同時,融合之前相同的行
              ws.mergeCells(1, startMergeCol, 1, endMergeCol);
              startMergeCol = col;
              endMergeCol = startMergeCol;
              perPurpose = purpose;
            }
            ws.addCell(new Label(row++, col, FcxtBuild.BUILD_BUILDINGTYPE.get(build.getBuildingtype()), JxlFormatUtil.wcCenter));
            ws.addCell(new Label(row++, col, build.getBuildarea().toString(), JxlFormatUtil.wcCenter));
            col++;
          }
          ws.mergeCells(0, perCol, 0, col-1);
          perCol = col;
        }
      }
      wwb.write();
      wwb.close();
    } catch (Exception e) {
      e.printStackTrace();
    }
  }

總結(jié)

以上所述是小編給大家介紹的Java導出excel時合并同一列中相同內(nèi)容的行思路詳解,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • 一文帶你了解Spring的Bean初始化過程和生命周期

    一文帶你了解Spring的Bean初始化過程和生命周期

    Spring的核心功能有三點IOC、DI、AOP,IOC則是基礎(chǔ),也是Spring功能的最核心的點之一。今天一起來總結(jié)下Spring中Bean是怎么被創(chuàng)建出來的
    2023-03-03
  • LambdaQueryWrapper與QueryWrapper的使用方式

    LambdaQueryWrapper與QueryWrapper的使用方式

    這篇文章主要介紹了LambdaQueryWrapper與QueryWrapper的使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • java鏈式創(chuàng)建json對象的實現(xiàn)

    java鏈式創(chuàng)建json對象的實現(xiàn)

    本文主要介紹了java中如何通過最簡單的方式實現(xiàn)鏈式創(chuàng)建json對象,解決創(chuàng)建json代碼臃腫的問題,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • Java反射機制的實現(xiàn)詳解

    Java反射機制的實現(xiàn)詳解

    反射主要解決動態(tài)編程,即使用反射時,所有的對象生成是動態(tài)的,因此調(diào)用的方法也是動態(tài)的.反射可以簡化開發(fā),但是代碼的可讀性很低
    2013-05-05
  • SpringBoot記錄Http請求日志的方法

    SpringBoot記錄Http請求日志的方法

    這篇文章主要介紹了SpringBoot記錄Http請求日志的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-03-03
  • Java項目中classpath類路徑是什么

    Java項目中classpath類路徑是什么

    classpath指的是類路徑,也就是編譯之后的target文件夾下的WEB-INF/class文件夾,下面這篇文章主要給大家介紹了關(guān)于Java項目中classpath類路徑是什么的相關(guān)資料,需要的朋友可以參考下
    2023-02-02
  • Springboot集成Springbrick實現(xiàn)動態(tài)插件的步驟詳解

    Springboot集成Springbrick實現(xiàn)動態(tài)插件的步驟詳解

    這篇文章主要介紹了Springboot集成Springbrick實現(xiàn)動態(tài)插件的詳細過程,文中的流程通過代碼示例介紹的非常詳細,感興趣的同學可以參考一下
    2023-06-06
  • 分布式系統(tǒng)中的降級熔斷設(shè)計問題面試

    分布式系統(tǒng)中的降級熔斷設(shè)計問題面試

    這篇文章主要為大家介紹了分布式系統(tǒng)中的降級熔斷設(shè)計問題面試解答,有需要的朋友可以借鑒參考下,希望能有所幫助,祝大家多多進步,早日升職加薪
    2022-03-03
  • Java實現(xiàn)文件壓縮與解壓的示例[zip格式,gzip格式]

    Java實現(xiàn)文件壓縮與解壓的示例[zip格式,gzip格式]

    本篇文章主要介紹了Java實現(xiàn)文件壓縮與解壓的示例[zip格式,gzip格式],具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2017-01-01
  • SpringBoot添加SSL證書的方法

    SpringBoot添加SSL證書的方法

    HTTPS 實際上就是 HTTP + SSL,使我們的網(wǎng)站更加安全,地址欄上會有一把小鎖。那么如何在SpringBoot添加SSL證書,下面就一起來了解一下
    2021-05-05

最新評論