背景:一个excel导入功能。上线前,业务提出了个小改动,然后直接改了,使用业务提供的测试数据回归时,报错了,因为excel中的数据没取到。。。

明明有值,但代码没有读取到。。。
这块代码没有动过,一下子没有思路,遇事不决,可问AI;

AI讲的太啰嗦,没有针对性,都火烧眉头了,谁来时间看这个通用但不知道哪一条work的答案。
先讲问题的原因:因为这个回归用的excel与实际用的不同。导致Excel 日期列的数据,明明可以看得见,但EasyExcel却读不到。
AI不语,即随本心
实际用的excel:

本次回归用到的Excel:

同志们,后面如果再发现这种情况,把数据格式调整到约定的就可以了。
本次也是这么解决的。
不过,作为技术人,还是想了解下原因。
想知道原因的同学,咱们继续

是有不同。。。
就是这个不同导致EasyExcel读不到数据?
是的。就是因为数据类型不同。EasyExcel在抽象时,把不同类型的单元格值放在不同的字段,并且需要使用不同的API才能取到。。。
dubug一下先。
先定看看这个EasyExcel的映射BO:
@ExcelProperty(value = "日期", converter = CleanStringConverter.class)
private String statementCreateDatetime;为啥要加这个converter?因为这一列的值,前面有个“=”


return value.replaceAll("^=\"|\"$", "");在
com.zkh360.gbb.finance.business.gbb.statement.alipay.util.CleanStringConverter#convertToJavaData
中打。
这是自定义converter,最终肯定会执行的。

com.alibaba.excel.metadata.data.ReadCellData对象中,不同CellType的数据存放在不同的字段,譬如stringValue存放STRING类型的CellValue,譬如numberValue存放NUMBER类型的CellValue。
获取相应的值,也需要使用对应的method才可以:

这个AI应该知道。


与Excel表格中有值是一致的。

明明只有一千多条数据,alibaba easyexcel竟然5分钟都没处理完!!!
又又又出现乱码了,这次不是taobao的接口的问题而是。。。
10月马上就要结束了,我很怀念他
今年的桂花开的也有点晚,凉凉的晚风中,混着浓郁的桂花香,洗去一天的的疲惫,好舒服,好开心