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

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

394939aabc2d038217a53167669e4b47.png

要实现这个也不难,

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

每次循环时记录下此次循环的房屋类型和上次循环的房屋类型,两者相同时,要合并的结束行++,否者,说明这个房屋类型已经循环完毕(前提是各类型都按顺序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[]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
导出Excel合并同一相同内容需要以下步骤: 1. 在导出数据,将相同数据排序,确保相同内容相邻排; 2. 遍历排序后的数据,比较相邻的相同数据是否相同,如果相同则需要进合并; 3. 合并需要注意合并的范围,需要记录当前合并的起始和终止,以便在完成一组合并后,能够继续合并下一组相同内容; 4. 合并需要注意相邻是否存在空白,需要将空白也进合并; 5. 最后将合并后的数据写入Excel文件。 具体实现可参考以下代码: ``` // 数据排序 Collections.sort(dataList, new Comparator<Data>() { @Override public int compare(Data o1, Data o2) { return o1.getColumn().compareTo(o2.getColumn()); } }); // 合并同一相同内容 int start = 0; for (int i = 1; i < dataList.size(); i++) { Data current = dataList.get(i); Data previous = dataList.get(i - 1); if (current.getColumn().equals(previous.getColumn())) { if (i == dataList.size() - 1) { mergeRows(start, i, dataList); } } else { mergeRows(start, i - 1, dataList); start = i; } } // 合并 private void mergeRows(int start, int end, List<Data> dataList) { if (start == end) { return; } String column = dataList.get(start).getColumn(); int rowIndex = start; for (int i = start + 1; i <= end; i++) { if (StringUtils.isBlank(dataList.get(i).getColumn())) { continue; } if (!column.equals(dataList.get(i).getColumn())) { sheet.addMergedRegion(new CellRangeAddress(rowIndex, i - 1, 0, 0)); rowIndex = i; column = dataList.get(i).getColumn(); } } sheet.addMergedRegion(new CellRangeAddress(rowIndex, end, 0, 0)); } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值