Java导出excel时合并同一列中相同内容的行思路详解

  

一,有时候导出Excel时需要按类别导出,一大类下好几个小类,小类下又有好几个小小类,就像下图:

  

癑ava导出excel时合并同一列中相同内容的行思路详解"

  

要实现这个也不难,

  

思路如下:按照大类来循环,如上就是按照张江校区,徐汇校区,临港校区三个大类循环,然后再处理小类,因为本例小小类不涉及合并,所以只涉及处理小类,如果需要处理小小类,还需要在处理一下,具体实现原理同小类;

  

,每次循环时记录下此次循环的房屋类型和上次循环的房屋类型,两者相同时,要合并的结束行+ +,否者,说明这个房屋类型已经循环完毕(前提是各类型都按顺序顺序了,保证相同类型相邻),开始融合。具体实现如下:

  

<强>二,实现代码,具体思路已经在注释中了

        filePath公共空expStatistics(字符串,字符串campuscode) {   尝试{   WritableWorkbook wwb=工作簿。createWorkbook(新文件(filePath));   JxlFormatUtil Jfu=new JxlFormatUtil ();   WritableSheet ws=wwb。createSheet(“房屋报表统计",0);   String [] tableHead={"校区名称:20”,“房屋类型:30”,“房屋用途:30”,“使用面积(㎡):20 "};   for (int i=0;我& lt;tableHead.length;我+ +){//每一列的标题样式   ws。addCell(新标签(0,我tableHead[我].split (“:”) [0], JxlFormatUtil.wcHead));   ws。setColumnView(我Integer.valueOf (tableHead[我].split (“:”) [1]));   }   int坳=1;//从第1行开始//以下变量用来融合相同内容的行   int perCol=上校;   字符串perPurpose=" ";//上一个用途类型   字符串目的=" ";//当前用途类型   int startMergeCol=1;//要融合的第一行   int endMergeCol=0;//要融合的最后行   布尔标志=true;//用来记录是否是第一次循环//根据搜索条件导出   ListcampusList=new ArrayList ();   如果(null !=campuscode,,!”“.equals (campuscode)) {   campusList=campusdao.findCampusByCode (campuscode);   其他}{   campusList=campusdao.findCampus ();   }   (FcxtCampus校园:campusList) {   List构建=builddao.statisticsBuilds (campus.getCampuscode());//获取所有房屋信息   如果(null !=构建,,builds.size()比;0){   (FcxtBuild构建:构建){   int行=0;//从第0列开始   ws。addCell(新标签(行+ +,坳,campus.getCampusname (), JxlFormatUtil.wcCenter));   目的=build.getUsefulpurpose ();   如果(国旗){//如果是第一次循环,将perPurpose初始化,以便后面的第一次判断   perPurpose=目的;   国旗=false;   }   ws。addCell(新标签(行+ +,坳,FcxtBuild.BUILD_USEFULPURPOSE.get (build.getUsefulpurpose ()), JxlFormatUtil.wcCenter));   如果(purpose.equals (perPurpose)) {   endMergeCol + +;   其他}{//两者不相同时,融合之前相同的行   ws。mergeCells (1 startMergeCol endMergeCol);   startMergeCol=上校;   endMergeCol=startMergeCol;   perPurpose=目的;   }   ws。addCell(新标签(行+ +,坳,FcxtBuild.BUILD_BUILDINGTYPE.get (build.getBuildingtype ()), JxlFormatUtil.wcCenter));   ws。addCell(新标签(行+ +,坳,build.getBuildarea () .toString (), JxlFormatUtil.wcCenter));   坳+ +;   }   ws。perCol mergeCells (0, 0, col-1);   perCol=上校;   }   }   wwb.write ();   wwb.close ();   }捕捉(异常e) {   e.printStackTrace ();   }   }      

  

以上所述是小编给大家介绍的Java导出excel时合并同一列中相同内容的行思路详解,希望对大家有所帮助,如果大家有任何疑问请给我留的言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!

Java导出excel时合并同一列中相同内容的行思路详解