Excel导出合并单元格导致数据丢失

Excel导出合并单元格导致数据丢失

场景:

Excel导出,涉及到单元格的合并。 在处理完每一行的数据后,需要对同一个id的单元行进行合并,却发现,合并后出现数据丢失。 本该有31条数据,但是到处的excel加上合并的行,只有31行(excel的行标)。 一定是合并的时候出现了问题

方案

经过debug排查,发现是如下代码合并问题

if(treeValueListSize > 1){
                for(int n = 0; n < firstTitleNodeIndex;  n++){
                    CellRangeAddress region = new CellRangeAddress(dataRow, dataRow + treeValueListSize-1, n, n);
                    sheet.addMergedRegion(region);
                }
                for(int n = lastTitleNodeIndex + 1; n < title.length;  n++){
                    CellRangeAddress region = new CellRangeAddress(dataRow, dataRow + treeValueListSize-1, n, n);
                    sheet.addMergedRegion(region);
                }

                dataRow += treeValueListSize;
            }

这里涉及到 sheet.addMergedRegion(region) 这个方法,方法如下

sheet.addMergedRegion(new CellRangeAddress(int firstRow, int lastRow, int firstCol, int lastCol)

代码从这里走过后, sheet里面的rows出现混乱。 初步猜测是这里的问题。

那怎么办呢?

猜想: 是在处理每一组数据的同时,进行excel行合并,导致出现问题。

方案

  1. 重写合并方法,将所有excel行都先生成后,然后进行统一标记合并。 对每一组数据,记录要合并的 行号和列号。 修改。 成功!

  2. 仔细研究之前的代码,网上搜,边处理数据,边合并单元格。 也搜不到。 合并的单元格 为 region, 却在debug的里面找不到。。。。 放弃

在这里插入图片描述

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值