说明
最近遇到了一个朋友问我的一个问题,觉得挺有意思的,记录一下。
简单说下背景,她需要在一个系统中导出订单报表,核对下金额,结果是金额对不上。
刚开始第一反应公式不对,检查后发现没毛病。最后猜想可能是代码问题导致的。
注:
1、别人的系统,无源码,也懒得去重现,但思路应该是对的,感兴趣的朋友可以验证下。
2、原Excel文件删掉找不到了,下面是模拟数据截图
现象与思路
看图,最后两行的数据是合并的,合计应该是90,但竟然是100!!公式是正确的。
取消合并单元格后,发现,两个单元格都有值
再合并,再取消后,这下对了,B11为空了
那么是什么问题呢?从现象来看,应该是后台POI合并单元格时,没有清空被合并的数据。在计算机中,通过row:col的坐标可以定位到具体的某一个单元格
如果A1和A2合并了,这样表示
这时, 人工操作是无法给A2赋值的,但代码可以!
总结
当通过代码开创建表格,并合并单元格时,需要把被合并的数据清空,否则虽然肉眼看不到,但是数据依然存在。
拓展
除了这个问题,还有肉眼看不到但是机器能识别到的问题,项目中经常会遇到。如下图,当导入Excel时,颜色标记处,如果人工误操作,导致B4被编辑过,此时B4会有空值,虽然看不到值,但是系统会识别到,如果系统不做一些控制,就会出错。