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

要实现这个也不难,

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

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

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

public void expStatistics(String filePath,String campuscode) {

try {

WritableWorkbook wwb = Workbook.createWorkbook(new File(filePath));

JxlFormatUtil Jfu = new JxlFormatUtil();

WritableSheet ws = wwb.createSheet("房屋报表统计", 0);

String[] tableHead = {"校区名称: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行开始

//以下变量用来融合相同内容 的行

int perCol = col;

String perPurpose = "";//上一个用途类型

String purpose = "";//当前用途类型

int startMergeCol = 1;//要融合的第一行

int endMergeCol = 0;//要融合的最后行

boolean flag = true;//用来记录是否是第一次循环

//根据搜索条件导出

List campusList = new ArrayList();

if(null != campuscode && !"".equals(campuscode)){

campusList = campusdao.findCampusByCode(campuscode);

}else {

campusList =campusdao.findCampus();

}

for (FcxtCampus campus : campusList) {

List 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){//如果是第一次循环,将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();

}

}

总结

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

java 导出如何合并列_Java导出excel时合并同一列中相同内容的行思路详解相关推荐

  1. java excel中重复数据 事务处理_Java导出excel时合并同一列中相同内容的行思路详解...

    一.有时候导出Excel时需要按类别导出,一大类下好几个小类,小类下又有好几个小小类,就像下图: 要实现这个也不难, 思路如下:按照大类来循环,如上就是按照张江校区.徐汇校区.临港校区三个大类循环,然 ...

  2. java循环合并行_java导出excel时合并同一列中相同内容的行

    public voidexpStatistics(String filePath,String campuscode) {try{ WritableWorkbook wwb= Workbook.cre ...

  3. java怎么写合并列sql_SQL STUFF函数 拼接字符串 多列 合并成一列 转

    关于和并列的 要这种效果. create table tb(idint, value varchar(10)) insert into tbvalues(1,'aa') insert into tbv ...

  4. findmid函数c语言,excel find函数用法_excel中mid函数的用法教程详解

    [www.gpsvo.com--管理学] Excel中经常需要使用到mid函数进行截取数据,mid函数具体该如何使用操作呢?下面是由小编分享的excel中mid函数的用法,以供大家阅读和学习. exc ...

  5. java重定向url怎么写_Java:如何从重定向的URL中读取内容?

    给出以下内容: HttpURLConnection yc = (HttpURLConnection) dest.openConnection(); yc.setInstanceFollowRedire ...

  6. java break 在if 中使用_java中使用国密SM4算法详解

    前言 上次总结了一下加密算法的分类(加密算法有集中形式,各有什么不同?),现在我们用java语言实现一下SM4:无线局域网标准的分组数据算法.对称加密,密钥长度和分组长度均为128位. ps:我们既可 ...

  7. java迭代器删除元素_java迭代器中删除元素的实例操作详解

    java迭代器中删除元素的实例操作详解 2021-01-21 16:40:08 我们知道通过Iterator,可以对集合中的元素进行遍历.那么在其中遇到我们不需要的元素时,可不可以在遍历的时候顺便给删 ...

  8. Java 11中的新功能和API详解系列1

    Java 11中的新功能和API详解系列1 2018.9.27 版权声明:本文为博主chszs的原创文章,未经博主允许不得转载. JDK 11在语言语法方面有一个小改动,增加了相当数量的新API,以及 ...

  9. Excel 2016从一列中筛选全是字母或者中文的单元格

    Excel 2016从一列中筛选全是字母或者中文的单元格 1. 需求 2. 使用公式 2.1IF()函数 2.2 LEN()和LENB()函数 3. 解决需求 4. 知识扩展 1. 需求 如下图所示, ...

最新文章

  1. php多选框怎么传值,tp3.2如何处理多选框传参和判断状态
  2. 化学空间项目和GDB数据库
  3. iOS内实现h5原生开发
  4. 不知道发这些有啥用!多分享些技术噻...
  5. spring MVC使用自定义的参数解析器解析参数
  6. opencv---颜色空间转化并实现物体跟踪
  7. EXC_BAD_ACCESS
  8. Atitit.hybrid混合型应用 浏览器插件,控件的实现方式 浏览器运行本地程序的解决方案大的总结---提升用户体验and开发效率..
  9. Qt配置OpenCV时mingw32-make反复出错的原因
  10. 移动前端图片压缩上传
  11. C语言基础入门:C-Free5设置支持C99标准
  12. 综合1:stm32F4,ATKESP8266wifi,DS1302,AT24C02,KEY状态机,LCD屏幕320*240
  13. 生理学知识点总结--biologic
  14. Activiti学习——生成历史流程跟踪图
  15. 时光里,我一个人的碎碎念。
  16. java项目——防止羊毛党“薅羊毛”
  17. mysql plsql 语法_PL/SQL基本语法
  18. Git-error: dst refspec branch matches more than one
  19. ps怎样给图片加logo
  20. ibm x201 怎么清理内部_联想 Thinkpad x201i怎么拆机清理风扇灰尘?_硬件教程

热门文章

  1. 【概率论】正态分布的由来——从大一同学的视角出发
  2. 用Selenium(Python)代填返校报备
  3. java会员卡的绑定和解绑_前后端分离项目 — SpringSocial 绑定与解绑社交账号如微信、QQ...
  4. 如何使用人工智能进行目标受众细分和个性化营销:提高客户转化率和忠诚度
  5. 人脸识别-矩形圆形的绘制
  6. dmp标签_京东DMP人群标签有哪些注意事项,如何低投入获得高产出。
  7. 图文并茂——频分复用、时分复用、码分复用、复用和多址的区别
  8. SaaSBase:最受欢迎的CRM软件有哪些
  9. 学习TypeScript数据类型-从零到英雄
  10. 计算机二级c培训,校园网-全国计算机等级考试二级C培训讲义.doc