java 导出如何合并列_Java导出excel时合并同一列中相同内容的行思路详解
一、有时候导出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时合并同一列中相同内容的行思路详解相关推荐
- java excel中重复数据 事务处理_Java导出excel时合并同一列中相同内容的行思路详解...
一.有时候导出Excel时需要按类别导出,一大类下好几个小类,小类下又有好几个小小类,就像下图: 要实现这个也不难, 思路如下:按照大类来循环,如上就是按照张江校区.徐汇校区.临港校区三个大类循环,然 ...
- java循环合并行_java导出excel时合并同一列中相同内容的行
public voidexpStatistics(String filePath,String campuscode) {try{ WritableWorkbook wwb= Workbook.cre ...
- java怎么写合并列sql_SQL STUFF函数 拼接字符串 多列 合并成一列 转
关于和并列的 要这种效果. create table tb(idint, value varchar(10)) insert into tbvalues(1,'aa') insert into tbv ...
- findmid函数c语言,excel find函数用法_excel中mid函数的用法教程详解
[www.gpsvo.com--管理学] Excel中经常需要使用到mid函数进行截取数据,mid函数具体该如何使用操作呢?下面是由小编分享的excel中mid函数的用法,以供大家阅读和学习. exc ...
- java重定向url怎么写_Java:如何从重定向的URL中读取内容?
给出以下内容: HttpURLConnection yc = (HttpURLConnection) dest.openConnection(); yc.setInstanceFollowRedire ...
- java break 在if 中使用_java中使用国密SM4算法详解
前言 上次总结了一下加密算法的分类(加密算法有集中形式,各有什么不同?),现在我们用java语言实现一下SM4:无线局域网标准的分组数据算法.对称加密,密钥长度和分组长度均为128位. ps:我们既可 ...
- java迭代器删除元素_java迭代器中删除元素的实例操作详解
java迭代器中删除元素的实例操作详解 2021-01-21 16:40:08 我们知道通过Iterator,可以对集合中的元素进行遍历.那么在其中遇到我们不需要的元素时,可不可以在遍历的时候顺便给删 ...
- Java 11中的新功能和API详解系列1
Java 11中的新功能和API详解系列1 2018.9.27 版权声明:本文为博主chszs的原创文章,未经博主允许不得转载. JDK 11在语言语法方面有一个小改动,增加了相当数量的新API,以及 ...
- Excel 2016从一列中筛选全是字母或者中文的单元格
Excel 2016从一列中筛选全是字母或者中文的单元格 1. 需求 2. 使用公式 2.1IF()函数 2.2 LEN()和LENB()函数 3. 解决需求 4. 知识扩展 1. 需求 如下图所示, ...
最新文章
- php多选框怎么传值,tp3.2如何处理多选框传参和判断状态
- 化学空间项目和GDB数据库
- iOS内实现h5原生开发
- 不知道发这些有啥用!多分享些技术噻...
- spring MVC使用自定义的参数解析器解析参数
- opencv---颜色空间转化并实现物体跟踪
- EXC_BAD_ACCESS
- Atitit.hybrid混合型应用 浏览器插件,控件的实现方式 浏览器运行本地程序的解决方案大的总结---提升用户体验and开发效率..
- Qt配置OpenCV时mingw32-make反复出错的原因
- 移动前端图片压缩上传
- C语言基础入门:C-Free5设置支持C99标准
- 综合1:stm32F4,ATKESP8266wifi,DS1302,AT24C02,KEY状态机,LCD屏幕320*240
- 生理学知识点总结--biologic
- Activiti学习——生成历史流程跟踪图
- 时光里,我一个人的碎碎念。
- java项目——防止羊毛党“薅羊毛”
- mysql plsql 语法_PL/SQL基本语法
- Git-error: dst refspec branch matches more than one
- ps怎样给图片加logo
- ibm x201 怎么清理内部_联想 Thinkpad x201i怎么拆机清理风扇灰尘?_硬件教程
热门文章
- 【概率论】正态分布的由来——从大一同学的视角出发
- 用Selenium(Python)代填返校报备
- java会员卡的绑定和解绑_前后端分离项目 — SpringSocial 绑定与解绑社交账号如微信、QQ...
- 如何使用人工智能进行目标受众细分和个性化营销:提高客户转化率和忠诚度
- 人脸识别-矩形圆形的绘制
- dmp标签_京东DMP人群标签有哪些注意事项,如何低投入获得高产出。
- 图文并茂——频分复用、时分复用、码分复用、复用和多址的区别
- SaaSBase:最受欢迎的CRM软件有哪些
- 学习TypeScript数据类型-从零到英雄
- 计算机二级c培训,校园网-全国计算机等级考试二级C培训讲义.doc