前段时间,公司boss提了一个需求,要求解析很多张excel数据保存到数据库中,但是这些excel参差不齐,而其中又暗藏着一定的规律,于是在与同事与前辈的交谈中,确立了一个解决方案,最后自己动手造了个轮子。
excel类似于这样的:
image.png
我们要查询一个excel里面的数据,比如他的第xx个单元格内容满足一个条件,就取第xx个单元格。
比如拿这个excel来说,我们要解析成一个对象,他有一个属性是日期,还有一个面额的对象集合,最后还有一个属性是统计人。我们可能会有很多张excel,均都满足这样的一个规律,并且这个条件后期可能会经常发生变化,硬编码是不可能的。
于是乎,决定把这些规律用配置文件给他表达出来(经过一番的深思,最后决定使用yaml文件进行配置):
image.png[x]代表当前的第x个单元格,索引用0开始,比如[1]代表当前行第1个单元格。
所有的子对象的属性必须用properties属性包起来,因为,对于子对象我们也支持使用子对象的条件表达式。对于子对象是集合等相关数据类型,如果根据表达式匹配多次,会反射到对应的数据类型自动装配,无需进行匹配,具体使用方法详见:https://gitee.com/luhui123/excel-mapping-helper
当然,这个配置内容如果你不喜欢放到文件中,也是可以保存到数据库中的。
网友评论