最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

一、有時(shí)候?qū)С鯡xcel時(shí)需要按類別導(dǎo)出,一大類下好幾個(gè)小類,小類下又有好幾個(gè)小小類,就像下圖:

要實(shí)現(xiàn)這個(gè)也不難,

思路如下:按照大類來(lái)循環(huán),如上就是按照張江校區(qū)、徐匯校區(qū)、臨港校區(qū)三個(gè)大類循環(huán),然后再處理小類,因?yàn)楸纠⌒☆惒簧婕昂喜?,所以只涉及處理小類,如果需要處理小小類,還需要在處理一下,具體實(shí)現(xiàn)原理同小類;

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

二、實(shí)現(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("房屋報(bào)表統(tǒng)計(jì)", 0);
      String[] tableHead = {"校區(qū)名稱:20","房屋類型:30","房屋用途:30","使用面積(㎡):20"};
      for (int i = 0; i < tableHead.length; i++) {//每一列的標(biāo)題樣式
        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行開始
      //以下變量用來(lái)融合相同內(nèi)容 的行
      int perCol = col;
      String perPurpose = "";//上一個(gè)用途類型
      String purpose = "";//當(dāng)前用途類型
      int startMergeCol = 1;//要融合的第一行
      int endMergeCol = 0;//要融合的最后行
      boolean flag = true;//用來(lái)記錄是否是第一次循環(huán)
      //根據(jù)搜索條件導(dǎo)出
      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{//兩者不相同時(shí),融合之前相同的行
              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導(dǎo)出excel時(shí)合并同一列中相同內(nèi)容的行思路詳解,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • win10下定時(shí)運(yùn)行與開機(jī)自啟動(dòng)jar包的方法記錄

    win10下定時(shí)運(yùn)行與開機(jī)自啟動(dòng)jar包的方法記錄

    這篇文章主要給大家介紹了關(guān)于win10下定時(shí)運(yùn)行與開機(jī)自啟動(dòng)jar包的相關(guān)資料,文中通過(guò)圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • Mybatis實(shí)現(xiàn)SQL存儲(chǔ)流程詳解

    Mybatis實(shí)現(xiàn)SQL存儲(chǔ)流程詳解

    MyBatis作為一款優(yōu)秀的持久層框架,它支持自定義SQL、存儲(chǔ)過(guò)程以及高級(jí)映射。它免除了幾乎所有的JDBC代碼以及設(shè)置參數(shù)和獲取結(jié)果集的工作
    2023-03-03
  • RocketMQ消息丟失場(chǎng)景以及解決方法

    RocketMQ消息丟失場(chǎng)景以及解決方法

    這篇文章主要給大家介紹了關(guān)于RocketMQ消息丟失場(chǎng)景以及解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • java在linux本地執(zhí)行shell命令的實(shí)現(xiàn)方法

    java在linux本地執(zhí)行shell命令的實(shí)現(xiàn)方法

    本文主要介紹了java在linux本地執(zhí)行shell命令的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • Spring系列中的beanFactory與ApplicationContext

    Spring系列中的beanFactory與ApplicationContext

    這篇文章主要介紹了Spring系列中的beanFactory與ApplicationContext,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-09-09
  • java中Map集合的常用方法總結(jié)大全

    java中Map集合的常用方法總結(jié)大全

    開發(fā)中最常用的就是List集合和Map集合,Map集合是基于java核心類java.util中的,下面這篇文章主要給大家總結(jié)介紹了關(guān)于java中Map集合的一些常用方法,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-01-01
  • Java報(bào)錯(cuò)org.hibernate.TypeMismatchException的解決方法

    Java報(bào)錯(cuò)org.hibernate.TypeMismatchException的解決方法

    在Java開發(fā)領(lǐng)域,尤其是涉及到數(shù)據(jù)持久化的項(xiàng)目中,Hibernate是一款廣泛使用的強(qiáng)大工具,然而,可能會(huì)在使用過(guò)程中遭遇各種報(bào)錯(cuò),其中org.hibernate.TypeMismatchException就是一個(gè)讓人頭疼的問(wèn)題,下面我們一起深入剖析這個(gè)報(bào)錯(cuò)信息
    2024-11-11
  • 解讀@EventListener工作原理

    解讀@EventListener工作原理

    這篇文章主要介紹了@EventListener工作原理,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • SpringBoot排除不需要的自動(dòng)配置類DataSourceAutoConfiguration問(wèn)題

    SpringBoot排除不需要的自動(dòng)配置類DataSourceAutoConfiguration問(wèn)題

    這篇文章主要介紹了SpringBoot排除不需要的自動(dòng)配置類DataSourceAutoConfiguration問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • Java多線程提交按照時(shí)間順序獲取線程結(jié)果詳解流程

    Java多線程提交按照時(shí)間順序獲取線程結(jié)果詳解流程

    在工作中是否存在這樣的場(chǎng)景,多個(gè)線程提交執(zhí)行,你不想全部線程執(zhí)行結(jié)束了獲取結(jié)果,而是有線程完成返回結(jié)果就獲取消費(fèi)。本文提供該場(chǎng)景的工具類,可以直接用哦
    2021-11-11

最新評(píng)論

霍林郭勒市| 英吉沙县| 甘洛县| 巴马| 馆陶县| 南投县| 阆中市| 长顺县| 民勤县| 龙陵县| 谷城县| 延吉市| 区。| 噶尔县| 沐川县| 靖安县| 绥芬河市| 克拉玛依市| 河北区| 五指山市| 遂昌县| 大城县| 雷山县| 上犹县| 罗平县| 北宁市| 中方县| 玛多县| 公主岭市| 徐闻县| 吕梁市| 婺源县| 太保市| 兴城市| 利津县| 板桥市| 淳安县| 商城县| 广宁县| 德昌县| 保山市|