找回密码
 立即注册

QQ登录

只需一步,快速开始

phoben 讲师达人认证 悬赏达人认证 活字格认证
论坛元老   /  发表于:2024-2-7 16:03  /   查看:1178  /  回复:9
本帖最后由 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
image.png147345580.png

sheet2
image.png130154723.png

我们要做的,就是将这个Excel按照数据的字段名进行映射,取我们要的列,转为JSON数组存到数据库;
下面是活字格的DEMO效果:

1、选择文件


选择文件.png

2、设置列名对应关系
     这里"数据库字段名"是固定的,我们让用户填写"Excel中列名"即可;

设置列名.png

3、获取Excel数据
     可以看到,Excel文件已经被转为JSON数组,并且列名已经按照我们定义的范围进行映射。
     我们只需要将这个JSON数组循环写入数据库就可以。
导入成功.png


到这里就大功告成,我们实现了让用户上传任意Excel文件,并由用户自行指定列名对应关系来实现数据导入。


实现原理



1、下载好所需插件:marketplace.grapecity.com.cn//ApplicationDetails?productID=SP2401300001&productDetailID=D2401300004


image.png251759642.png

2、准备好测试表格
多Sheet表格导入文件.zip (11.26 KB, 下载次数: 59)

9 个回复

倒序浏览
绿之雪
金牌服务用户   /  发表于:2024-2-8 09:59:22
沙发
回复 使用道具 举报
137294886
金牌服务用户   /  发表于:2024-2-8 10:29:49
板凳
老师好,这个功能很实用,向老师学习!请问活字格的DEMO能否一并发一下吗?
回复 使用道具 举报
phoben讲师达人认证 悬赏达人认证 活字格认证
论坛元老   /  发表于:2024-2-8 21:21:30
地板
137294886 发表于 2024-2-8 10:29
老师好,这个功能很实用,向老师学习!请问活字格的DEMO能否一并发一下吗?

这会儿过年了,节后会发个DEMO
回复 使用道具 举报
137294886
金牌服务用户   /  发表于:2024-2-8 23:07:01
5#
谢谢,祝春节快乐!
回复 使用道具 举报
tominson
银牌会员   /  发表于:2024-2-24 15:52:56
6#
大神,能发个demo学习一下吗?
回复 使用道具 举报
phoben讲师达人认证 悬赏达人认证 活字格认证
论坛元老   /  发表于:2024-2-25 20:23:02
7#
tominson 发表于 2024-2-24 15:52
大神,能发个demo学习一下吗?

忙完了看做一个出来
回复 使用道具 举报
gczxxu
银牌会员   /  发表于:2024-2-25 23:06:34
8#
超哥,厉害
回复 使用道具 举报
遇见未知的自己
银牌会员   /  发表于:2024-2-27 14:11:30
9#
这个相当的厉害
回复 使用道具 举报
小卒
注册会员   /  发表于:2024-3-1 12:04:05
10#
好思路学习了,谢谢楼主分享。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部