通过excel模板批量导入数据实现过程总结编辑本段回目录
做项目期间做到一个需求是用excel批量导入计本信息,刚开始接到这个需求头脑一片空白,因为之前没做过,不过空白是空白但还是要做。
优势:
(1)系统在添加页面操作比较浪费时间,用导入可以增加系统的可用性;
(2)操作简单;
劣势:
excel导入数据类型不好控制;如时间类型,参数类型等,模板设计;
(1)提供Excel导入模板;
(2)导入Excel Map映射机制;
(3)Poi架包
(1)模板设置
一些参数下拉列表的设置,如:证件类型、人员性别、政治面貌等,在界面上操作都是选择项,而在Excel模板中我们也要这样设置,以免用户在Excel里错误填写;
操作步骤:
1.选择要设置的单元格,譬如A1单元格;
2.选择菜单栏的“数据”→“有效性”→出现“数据有效性”弹出窗口;
3.在“设置”选项中→“有效性条件”→“允许”中选择“序列”→右边的“忽略空值”和“提供下拉菜单”全部打勾→在“来源”下面输入数据,譬如“1,2,3,4,5,6,7,8,9”(不包括双引号,分割符号“,”必须为半角模式)→按“确定”就OK了,再次选择该A1单元格,就出现了下菜单。
但是往往我们的数据库存的的代码而不是我们在外面选择的可以看到的值,我们在action后台获取模板里的值需要进行参数转换。这一转换在Excel导入功能中是必要的内容,在多种类型的参数转换中,我们可以定义一个Map缓存,用传进去的值去匹配map里的value值,再根据value值去匹配所需要的key值。
(2)时间设置
如果数据库所需要的时间类型为data类型,我们可以在模板上选中时 间的一列点击右键,设置单元格格式,选择一项为“yyyy-mm-dd”即可,然而开发人员所做的程序用户不一定那样操作,因为Excel里的时间格式会随着用户复制信息而改 变。目前本人在MAP映射机制里能够识别String类型和Data类型,所以我们就难以确定用户传的是Data类型还是String类型,这样就无形的增加开发人员的苦恼,首先我们要在时间列里注明我们系统支持的时间格式。最佳实践方式为:在时间列标注时间格式;模板设置为文本格式;用户可以在时间列中以文本格式填写“yyyy-mm-dd”、"yyyy年mm月dd日"、"yyyy.mm.dd"、"yyyy/mm/dd"四种样式,然后在后台进行时间段截取 我们数据库需要的类型。
在一次导入的过程中,有时也会有失败的情况,所以我们在导入的过程中也需要回导入之前的结果,可以增加用户的可用性。
对于开发人员来说,不仅能够正确的理解需求并开发程序,我们还需要站在用户的角度去考虑我们开发的系统可用性,更方便用户去操作系统办理相关业务。