奇葩的需求

2021-07-31 16:17:28 +08:00
 overthemoon

组长要求实现 Excel 导入时,不管 Excel 的标题位置顺序和数量怎么变化,都能插入到对应的数据库字段里面,这种需求怎么实现? 后端用 java

5912 次点击
所在节点    程序员
41 条回复
hobbitlhy
2021-07-31 23:27:17 +08:00
@overthemoon 中文标题和数据库注释对应吗?
liuzhaowei55
2021-07-31 23:35:55 +08:00
正常应该就是前端或者后端读出来一点数据响应到前段让用户选择首行是否是标题行,每一列对应模型的数据,数据量不大还可以再检验一下行列数据格式。
liuzhaowei55
2021-07-31 23:38:07 +08:00
@liuzhaowei55 不要让提需求的人,讲数据方案,就讲需求好了,可能要的并不是一匹跑得更快的🐴
gBurnX
2021-07-31 23:50:40 +08:00
@overthemoon

Excel 里能写中文标题里,有 3 个地方:

1.excel 文件名
2.Sheet 名称
3.Cell 里面的 value

我们都觉得是 3,你想说是哪个?
overthemoon
2021-08-01 00:12:40 +08:00
@hobbitlhy 和数据库英文字段一一映射
overthemoon
2021-08-01 00:13:11 +08:00
@gBurnX 算是第三个把
koast
2021-08-01 00:52:43 +08:00
感觉楼上各位没有答非所问呀...需求就是写起来有点麻烦,但是也算正常需求吧,处理好各种意外情况就好,那种表经过一堆人以后结构一定会变得乱乱的...
harde
2021-08-01 01:19:31 +08:00
映射表
name , column
1 、编号, id
2 、名称, name


读取 excel 、获取列名,通过映射表转换出字段。

不是这个需求么????
jiayong2793
2021-08-01 02:11:12 +08:00
实现这个需求这么麻烦吗?我见公司的.net 几行代码就可以实现导入导出了
gBurnX
2021-08-01 04:57:47 +08:00
@overthemoon

所以,既然你也承认是第三个需求,那么你应该把我在上面提的方案,仔细认真看看。
BraveChi
2021-08-01 07:51:36 +08:00
非常正常的需求,甚至我觉着大部分的导入都是这样的,另外我遇到的系统都是这样的,难道你是按照顺序指定数据库字段导入的? 不太可能吧? 设置按照顺序指定数据库字段反而麻烦吧?
rekulas
2021-08-01 09:04:56 +08:00
如果想吐槽就安心吐槽
如果想咨询大家就详细描述下具体场景,这样起了个标题就想大家给出思路的,谁做得到呢
就你这个标题,瞬间能想出几十种可能
niub
2021-08-01 10:17:47 +08:00
我之前处理过类似的需求,答案在这里:

https://www.cnblogs.com/cone/p/12002913.html
loopinfor
2021-08-01 10:28:31 +08:00
应该还要实现标题对不上的时候可以让用户从标题列表里面手动指定 Excel 列和数据库字段的对应关系
gamexg
2021-08-01 11:37:33 +08:00
根据标题行决定当前列属于哪个字段
这个应该是常规需求吧?

当然如果标题可能有错别字、别名等,还要求自动识别出来,那么会是大麻烦。
否则仅仅的大小写错误、空格等并不麻烦。

读取标题行,根据标题行生成一个字典,key 为字段名,value 为列索引值。
然后需要什么字段时,那字段名去查询下字典,得到列索引值,读取对应列即可。

或者是我理解错需求了?
LowBi
2021-08-01 12:48:47 +08:00
其实还是按照后台生成一个模板,再把内容录入进行导入,这也算是一种标准化吧,不然你那样后面随便乱来,找的还是你,吃力不讨好
no1xsyzy
2021-08-01 12:57:52 +08:00
告诉你个消息,我自己做的 hack 都是 csv.DictReader 然后 func(**dct) 传参的。

根据 key 来确定对应关系不合理?你难道要求 json 序列化出来有序吗?
大不了 if else if else if 啊?
建议从编程第二堂课开始回炉
Mountain
2021-08-01 14:52:55 +08:00
这么多人都解释不明白的,能让你如此强烈的感到奇葩的需求,是不是各个目标字段不在同一张表甚至不在同一个库里啊?
DinnyXu
2021-08-01 16:17:25 +08:00
正常的操作不是会提供一个 excel 导入的模板吗,填写的时候对应着模板里面约定好的字段顺序就好了
hytex
2021-08-02 09:47:15 +08:00
easypoi 呀,有对应的文档

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/792876

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX