背景

EasyExcel(根据条件动态合并单元格的重复数据))_Violet-CSDN博客_easyexcel动态合并单元格
现有的订单导出是使用的easyExcel完成的.对于相同单元格的合并是自定义的策略,问题是对于重复单元格的值会合并,表格求和时值会虚高

现需要对合并格做修改,做到值只有一个。

思路

sheet合并代码主要为: sheet.addMergedRegionUnsafe(cellRangeAddr);
问题是为什么合并单元格时会带上原有的数据,猜测是删除合并区域问题(removeMergedRegion)

关键代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// 比较当前行单元格与上一行是否相同,相同合并当前单元格与上一行  
if (curData.equals(preData)) {

Sheet sheet = writeSheetHolder.getSheet();
List<CellRangeAddress\> mergeRegions = sheet.getMergedRegions();
boolean isMerged = false;
for (int i = 0; i < mergeRegions.size() && !isMerged; i++) {
CellRangeAddress cellRangeAddr = mergeRegions.get(i);
// 若上一个单元格已经被合并,则先移出原有的合并单元,再重新添加合并单元
if (cellRangeAddr.isInRange(curRowIndex \- 1, curColIndex)) {
sheet.removeMergedRegion(i);
cellRangeAddr.setLastRow(curRowIndex);
sheet.addMergedRegionUnsafe(cellRangeAddr);
isMerged = true;
}
}
// 若上一个单元格未被合并,则新增合并单元
if (!isMerged) {
CellRangeAddress cellRangeAddress = new CellRangeAddress(curRowIndex \- 1, curRowIndex, curColIndex, curColIndex);
sheet.addMergedRegionUnsafe(cellRangeAddress);
}
}
  1. 查看了有关问题解决方案:
  1. 猜测是删除合并单元(removeMergedRegion)并没有删除包含的数据
  2. 准备一次合并所有相同单元格来实现
  3. 原有合并策略是根据行 列循环合并的,无法做到一次性合并,修改合并策略代价比较大,方案不可行。
  4. 通过写Excel时,如果一列有合并单元格时,用excel对该列求和,会重复计算 · Issue #1673 · alibaba/easyexcel 知道,需要将中间值置空来解决
  5. 尝试将合并cell 值设置为空
  6. 将当前cell值设置为空后,会导致无法触发值相同的条件判断,最多只能合并两行
  7. 修改合并条件判断,当单元格不是第一列且当前单元格第一列与上一列值相同,且当前单元格与上一单元格相同或 上一单元格为空时,值设置空.
  8. 测试可行 已解决 

解决代码:

 
1
2
3
4
5
6
7
// 比较当前行单元格与上一行是否相同,相同合并当前单元格与上一行 //重复值处理  
if (curData.equals(preData) || preCell.getCellTypeEnum().equals(CellType.BLANK)) {
//当前单元格不在第一列 值设置空
if (curColIndex != 0){
cell.setCellType(CellType.BLANK);
}
...

解决easyexcel合并单元格数组求和重复问题的更多相关文章

  1. NG-ZORRO + angular-cli11 表格横纵向单元格合并,按需设置背景色,解决动态合并单元格动态colspan情况下,nzLeft固定列失效问题,也适用VUE,REACT

    NG-ZORRO + angular-cli11 实现表格横纵向单元格合并,按需设置背景色,并解决动态合并单元格动态colspan情况下,nzLeft固定列失效问题 HTML代码 <!-- 1. ...

  2. Java删除word合并单元格时的重复值

    Spire.Doc提供了Table.applyVerticalMerge()方法来垂直合并word文档里面的表格单元格,Table.applyHorizontalMerge()方法来水平合并表格单元格 ...

  3. 解决CGrIdCtrl合并单元格后继续拆分后的问题

    DWORD dwMergeCellCount = vMergeCells.size(); ; i < dwMergeCellCount; i++){ m_HFlexGrid.SplitCells ...

  4. java导出标题多行且合并单元格的EXCEL

    场景:项目中遇到有需要导出Excel的需求,并且是多行标题且有合并单元格的,参考网上的文章,加上自己的理解,封装成了可自由扩展的导出工具 先上效果,再贴代码: 调用工具类进行导出: public st ...

  5. element-ui + vue ,ant-design + vue , Angular + ZORRO 实现表格自动横纵向合并单元格,并自动根据单元格数据进行添加样式

    element-ui + vue ,ant-design + vue , Angular + ZORRO 实现表格自动横纵向合并单元格,并自动根据单元格数据进行添加样式 本文重点写 element-u ...

  6. 【已解决】xlwings库合并单元格,不报错,不执行

    源代码如下: import xlwings as xw app = xw.App(visible=True, add_book=False) app.display_alerts = False ap ...

  7. vue-element-table-js去重合并单元格解析【实战需求】

    有数据如下: { '2019-01-23': [ { 'channel': 'zp', 'listScanListNum': 24, 'listParseOkNum': 0, 'listPersonM ...

  8. 让我头疼一下午的Excel合并单元格

    Excel导出常见问题 excel导出其实不算什么难事 在网上copy下模板代码,填充自己的业务数据,提供一个http接口基本就可以得到你要导出的数据了. 但是,凡事都有例外,截止今天,excel导出 ...

  9. JS动态生成表格后 合并单元格

    JS动态生成表格后 合并单元格 最近做项目碰到表格中的单元格合并的问题,需求是这样的,首先发ajax请求 请求回来后的数据 动态生成表格数据,但是生成后如果编号或者(根据其他的内容)有相同时,要合并单 ...

  10. 个人永久性免费-Excel催化剂功能第52波-相同内容批量合并单元格,取消合并单元格并填充内容

    在高级Excel用户群体中无比痛恨的合并单元格,在现实的表格中却阴魂不散的纠缠不断.今天Excel催化剂也来成为“帮凶”,制造更多的合并单元格.虽然开发出此功能,请使用过程中务必要保持节制,在可以称为 ...

随机推荐

  1. Python 潮流周刊#81:在个人电脑上运行 GPT-4 级别的大模型(摘要)

    本周刊由 Python猫 出品,精心筛选国内外的 250+ 信息源,为你挑选最值得分享的文章.教程.开源项目.软件工具.播客和视频.热门话题等内容.愿景:帮助所有读者精进 Python 技术,并增长职 ...

  2. 问题解决:windows主机开机不插屏幕不能自动进入桌面

    操作系统一般都有这种设定,不论是windows还是Linux系统,那就是主机开机不插屏幕不能自动进入桌面操作系统一般都有这种设定,不论是windows还是Linux系统,那就是主机开机不插屏幕不能自动 ...

  3. 运筹帷幄,质效兼修:源启云原生基础设施管理平台助推企业IT基础资源能效跃迁

    导语 数字化大潮席卷,企业需要建设一套能够满足云原生环境下基础资源一体化管理和快速交付的基础设施自动化管理系统,系统需要具备"云上""云下""容器&q ...

  4. Shiro-BasicHttpAuthenticationFilter 鉴权过滤器的使用方式

    它的作用是用来根据路径匹配结果,调用相应过滤器 onPreHandle 这里是正在的执行逻辑,之前的都是判断,它返回了两个方法: isAccessAllowed() onAccessDenied() ...

  5. 【分享】记一次项目迁移(docker java | docker python)

    项目:前端Vue3,后端Python+Java,数据库Redis+MySQL 原先部署在centos7里面的,使用的宝塔面板部署的,还算方便. 但是服务器要到期了,要将项目迁移到另外一台服务器. 另外 ...

  6. GitHub主页3D图表显示

    效果如图,项目来源于 yoshi389111/github-profile-3d-contrib: This GitHub Action creates a GitHub contribution c ...

  7. 【网络安全】Shell 脚本学习

    声明:学习视频来自 b 站 up 主 泷羽 sec,如涉及侵权马上删除文章 声明:本文主要用作技术分享,所有内容仅供参考.任何使用或依赖于本文信息所造成的法律后果均与本人无关.请读者自行判断风险,并遵 ...

  8. PostgreSQL 初始化配置设置

    title: PostgreSQL 初始化配置设置 date: 2024/12/27 updated: 2024/12/27 author: cmdragon excerpt: PostgreSQL是 ...

  9. Qt音视频开发02-海康sdk解码(支持句柄/回调/gpu模式/支持win/linux)

    一.前言 为何还要选用使用海康sdk,之前不是ffmpeg已经牛皮吹上天了吗?这个问题问得好,那是因为无论ffmpeg也好还是vlc/mpv之类的,都是实现的播放相关,不同的监控硬件厂家对应设备还有很 ...

  10. python SQLAlchemy ORM——从零开始学习 02简单的增删查改

    02 简单的增删查改 前情提要:承接了01中的engine以及User类 2-1 了解会话机制 个人理解 在SQLAlchemy 增删查改中是依赖会话(Session)这个机制进行操作的,我个人的理解 ...