一、有时候导出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 excel中重复数据 事务处理_Java导出excel时合并同一列中相同内容的行思路详解...相关推荐

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

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

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

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

  3. EasyExcel代码层面设置写出的Excel样式、以及拦截器策略的使用、自动列宽设置、EasyExcel默认设置详解

    一.概述 虽然EasyExcel已经提供了一系列注解方式去设置样式. 但是如果没有实体类,或者想要更精确的去设置导出文件的Excel样式的时候就需要在代码层面去控制样式了. 二.使用已有拦截器自定义样 ...

  4. excel如何晒出重复数据_怎么筛选出excel中重复数据

    本文收集整理关于怎么筛选出excel中重复数据的相关议题,使用内容导航快速到达. 内容导航: Q1:Excel的数据怎么筛选一列中重复的数据 假如1在A2单元格,在B2单元格输入公式, =IF(COU ...

  5. SQL中重复数据的查询与删除

    ========第一篇========= 在一张表中某个字段下面有重复记录,有很多方法,但是有一个方法,是比较高效的,如下语句: select data_guid from adam_entity_d ...

  6. 查找数据库中重复数据T-SQL

    查找数据库中重复数据T-SQL ========第一篇========= 在一张表中某个字段下面有重复记录,有很多方法,但是有一个方法,是比较高效的,如下语句: select data_guid fr ...

  7. java list 重复数据_java 查找list中重复数据实例详解

    java 查找list中重复数据实例详解 需求: 查找一个List集合中所有重复的数据,重复的数据可能不止一堆,比如:aa, bb, aa, bb, cc , dd, aa这样的数据.如果有重复数据, ...

  8. java 找出重复的数据_java 查找list中重复数据实例详解

    java 查找list中重复数据实例详解 需求: 查找一个list集合中所有重复的数据,重复的数据可能不止一堆,比如:aa, bb, aa, bb, cc , dd, aa这样的数据.如果有重复数据, ...

  9. 计算机用公式找出第一名,用公式查找Excel工作表中重复数据

    前不久,一位网友求教,要求找出Excel工作表中的重复数据并在单元格中列出.我给出了一个数组公式供参考,但不是太符合要求,因为这个数组公式虽然找出了重复数据,但是如果将数组公式向下复制时超出了出现重复 ...

最新文章

  1. CentOS 7.2 时间同步与时区设置
  2. 分享自己的C#开发类库
  3. api 数据gzip压缩_如何使用GZip和Jersey压缩Java REST API中的响应
  4. 多态计算器的开发 c# 1614095334
  5. enableEventValidation错误原因分析以及解决办法
  6. mysql 报错10614_PostgreSQL转换为Mysql
  7. Oracle 10g升级之--PSU 升级(续)
  8. Android应用层 知识体系
  9. 移动端开发项目的一些躺坑笔记
  10. linux设置系统环境变量的天坑
  11. CentOS 6.6源码编译升级GCC至4.8.2
  12. Fences -让你的桌面图标分组显示,成块状化
  13. UEFI学习3-制作UEFI启动U盘
  14. python 绘图中文显示_Python绘图实现显示中文
  15. 计算机管理-磁盘管理中进行扩展卷操作,管理磁盘diskpart命令
  16. 微信好友只有昵称没有微信号_只知道昵称怎么查他的微信号
  17. 嵌入式Linux设备驱动程序开发指南18(IIO子系统(二)具有硬件触发功能的IIO子系统ADC模块)——读书笔记
  18. virtualbox 不能为虚拟电脑打开一个新任务/VT-x features locked or unavailable in MSR.
  19. 站长VS微商 你选择哪个?
  20. Python之列表(学习笔记)

热门文章

  1. usaco#2018#January#Silver
  2. 使用PEAP实现802.1X
  3. 虚拟机(VM)与JVM
  4. 2021011029王芯悦-实验1
  5. Vue项目中750设计稿px自动转化成rem方法(小白一个,记录自己遇到的小白问题,大家勿怪)
  6. 设计模式----单利模式
  7. Photoshop Elements 2023(PSE简化版2023) 支持win/mac版
  8. windows 系统netstat -ano查看机器端口占用情况
  9. php 公众号发表文章,微信公众号如何发布文章(一套完整的流程)
  10. 销售订单配置项目说明