POI Cannot add merged region XXX to sheet because it overlaps with an existing merged region问题解决

问题描述:

java.lang.IllegalStateException: Cannot add merged region A1:B2 to sheet because it overlaps with an existing merged region (A1:C3).

问题分析:

1、使用POI的sheet.addMergedRegion()添加合并单元格信息方法,要合并的区域已经存在合并单元格,导致报错。

CellRangeAddress cellRangeAddress = new CellRangeAddress(0, 2, 0, 2);
sheet.addMergedRegionUnsafe(cellRangeAddress);
int startRowIndex = 0;
int endRowIndex = 1;
int startColIndex = 0;
int endColIndex = 1;
sheet.addMergedRegion(new CellRangeAddress(startRowIndex, endRowIndex, startColIndex, endColIndex));

问题解决:添加合并单元格信息时,先判断是否和已有的合并单元格重合。

CellRangeAddress cellRangeAddress = new CellRangeAddress(0, 2, 0, 2);
sheet.addMergedRegionUnsafe(cellRangeAddress);
int startRowIndex = 0;
int endRowIndex = 1;
int startColIndex = 0;
int endColIndex = 1;
List<CellRangeAddress> cellRangeAddressList = sheet.getMergedRegions();
List<CellRangeAddress> haveCellRangeAddressList = CollUtil.isNotEmpty(cellRangeAddressList) ? cellRangeAddressList.stream().filter(x ->
    ScopeUtil.isIntersection(x.getFirstColumn(), x.getLastColumn(), startColIndex, endColIndex)
    && ScopeUtil.isIntersection(x.getFirstRow(), x.getLastRow(), startRowIndex, endRowIndex)).collect(Collectors.toList()) : new ArrayList<>();
if (CollUtil.isEmpty(haveCellRangeAddressList)) {
    sheet.addMergedRegion(new CellRangeAddress(startRowIndex, endRowIndex, startColIndex, endColIndex));
}

注:

源码请查看Gitee。

xudongbase: 主要是项目中可以用到的共通方法https://gitee.com/xudong_master/xudongbase

旭东怪的个人空间-旭东怪个人主页-哔哩哔哩视频哔哩哔哩旭东怪的个人空间,提供旭东怪分享的视频、音频、文章、动态、收藏等内容,关注旭东怪账号,第一时间了解UP注动态。人生低谷不可怕,可怕的是坚持不到人生转折点的那一天https://space.bilibili.com/484264966?spm_id_from=333.1007.0.0 

  • 6
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值