背景
EasyExcel(根据条件动态合并单元格的重复数据))_Violet-CSDN博客_easyexcel动态合并单元格
现有的订单导出是使用的easyExcel完成的.对于相同单元格的合并是自定义的策略,问题是对于重复单元格的值会合并,表格求和时值会虚高
现需要对合并格做修改,做到值只有一个。
思路
sheet合并代码主要为: sheet.addMergedRegionUnsafe(cellRangeAddr);
问题是为什么合并单元格时会带上原有的数据,猜测是删除合并区域问题(removeMergedRegion)
关键代码:
1 |
// 比较当前行单元格与上一行是否相同,相同合并当前单元格与上一行 |
- 查看了有关问题解决方案:
- POI - User - sheet.removeMergedRegion throwing Exception in thread “main” java.lang.ArrayIndexOutOfBoundsException
- poi导出excel时,合并单元格后,求和不正确,即“假”合并_yupeikang的专栏-CSDN博客
- 猜测是删除合并单元(removeMergedRegion)并没有删除包含的数据
- 准备一次合并所有相同单元格来实现
- 原有合并策略是根据行 列循环合并的,无法做到一次性合并,修改合并策略代价比较大,方案不可行。
- 通过写Excel时,如果一列有合并单元格时,用excel对该列求和,会重复计算 · Issue #1673 · alibaba/easyexcel 知道,需要将中间值置空来解决
- 尝试将合并cell 值设置为空
- 将当前cell值设置为空后,会导致无法触发值相同的条件判断,最多只能合并两行
- 修改合并条件判断,当单元格不是第一列且当前单元格第一列与上一列值相同,且当前单元格与上一单元格相同或 上一单元格为空时,值设置空.
- 测试可行 已解决
解决代码:
1 |
// 比较当前行单元格与上一行是否相同,相同合并当前单元格与上一行 //重复值处理 |