Excel导入数据时,非得要固定模板?或许你可以这样解决列名不一致的问题!
本帖最后由 phoben 于 2024-3-1 12:47 编辑需求背景
在项目中,我们经常遇到一个需求,就是直接导入Excel数据,常见的做法一般是设计好一个导入模板,让用户按照模板填写进行导入。
但是很多场景中,让用户提供这样的模板是一件很难的事儿,毕竟这需要用户几乎重新做一张符合系统要求的表格。
这时候我不禁在想,如果能让用户直接选择它原本的Excel进行导入,那该多好,说做就做。
下面我介绍我的方法。
实现思路
1、选择文件;
2、列名映射;
3、获取数据;
4、导入数据库;
第1和第4没有任何难度,关键在于2和3两个步骤,存在两个难题:
1、如何将数据库字段名和Excel的列名进行映射?
2、如何只获取我要的列?
3、如何将Excel数据按照数据库字段名转为JSON数组方便写表?
要解决这个问题,还需要代码来做,这里只需要通过应用市场的"Excel处理器"插件辅助,就可以实现这个效果。
功能实现
首先我们来制作一个包含两个Sheet的表格来做测试,这个文件两个Sheet的标题行所在位置是不一样的,但列名是一样
sheet1
sheet2
我们要做的,就是将这个Excel按照数据的字段名进行映射,取我们要的列,转为JSON数组存到数据库;
下面是活字格的DEMO效果:
1、选择文件
2、设置列名对应关系
这里"数据库字段名"是固定的,我们让用户填写"Excel中列名"即可;
3、获取Excel数据
可以看到,Excel文件已经被转为JSON数组,并且列名已经按照我们定义的范围进行映射。
我们只需要将这个JSON数组循环写入数据库就可以。
到这里就大功告成,我们实现了让用户上传任意Excel文件,并由用户自行指定列名对应关系来实现数据导入。
实现原理
1、下载好所需插件:marketplace.grapecity.com.cn//ApplicationDetails?productID=SP2401300001&productDetailID=D2401300004
2、准备好测试表格
3、设计好页面
4、写好服务端命令
这里重点是“列名配置”,这是从前端页面用用户填写后传入的。
5、测试:
获取多行数据:如何在活字格中实现Excel导入,并动态映射列名_哔哩哔哩_bilibili
获取指定单元格数据:Excel获取指定单元格数据插件演示_哔哩哔哩_bilibili
强 老师好,这个功能很实用,向老师学习!请问活字格的DEMO能否一并发一下吗? 137294886 发表于 2024-2-8 10:29
老师好,这个功能很实用,向老师学习!请问活字格的DEMO能否一并发一下吗?
这会儿过年了,节后会发个DEMO 谢谢,祝春节快乐! 大神,能发个demo学习一下吗? tominson 发表于 2024-2-24 15:52
大神,能发个demo学习一下吗?
忙完了看做一个出来 超哥,厉害 这个相当的厉害:hjyzw: 好思路学习了,谢谢楼主分享。
页:
[1]