页面树结构
转至元数据结尾
转至元数据起始

(本文档仅供参考)

问题说明

如下图,某公司每月需通过excel导入功能,将当月各个销售的成交额和达标情况录入到数据库中。

其中第5列“达标情况”中总共存在“达标、不达标和中止”三种名称,但是客户的数据库中是以code来记录的,“达标”对应的code是“1”,“不达标”对应的code是“0”,“中止”对应的code是“2”。

那么在导入下图这样的Excel文件时,要求“达标情况”在Excel中是“达标、不达标、中止”,而录入到数据库时,对应的数据是“1、0、2”。smartbi中该如何实现此种效果?


解决方案

针对此需求,对于导入的Excel文件的来源不同,有不同的方案。请看下文:

方案一,适用条件:原始Excel文件从smartbi中下载

场景:我们知道,Excel导入功能的使用存在以下步骤

“(1)开发人员创建好Excel导入模板  

(2)业务人员按照要求的格式在Excel中填充好数据,并保存Excel文件

(3)业务人员进入smartbi系统,打开(1)中创建好的Excel导入模板,然后把自己填充数据的Excel文件上传,进行批量导入”


在某些情况下,Excel中的数据不全是业务人员自己填充的,有部分需要从数据库中取出来。比如下方的导入数据中,前3列“销售”、“身份证”和“部门”就需要从数据库中读取。那么这样的原始文件,我们可以在smartbi中制作好电子表格,把需要的数据查询出来,同时留下空白位置,让客户人员查询这张电子表格之后,可以导出Excel进行数据的填充,之后上传补录。

针对上面的这种场景和本文档的需求,我们可以通过以下步骤实现:


1.创建查询,将业务人员需要从数据库中读取的数据读取出来


2.使用上面的查询,创建电子表格,如下:


预览数据如下:



3.对于“成交额(万元)”是业务人员手动输入的,数据直接录入数据库中。达标情况只有3中,那么我们可以在达标情况这里通过Excel的功能加一个下拉框,让用户选择


(1)先新建另一个sheet,在这个sheet中输入“达标情况”的所有选项


(2)回到数据展示的Sheet1宏,单击F5单元格。选择工具栏上的“数据页签-》数据校验-》数据校验”


(3)在弹出的数据校验窗口的“设置”页签中,“允许”一项”选择“序列”


(4)来源一项,选择sheet2中达标情况的所有选项,如下:


则我们可以看到,在Excel中,是可以在“达标情况”这一列下选择选项进行输入的


4.接下来我们设置code。

(1)切换回到sheet2中,在达标情况这一列选项后面,我们新增一列,把每个达标情况对应的code输入进去


(2)切换回到Sheet1中,在“达标情况”这一列后面增加一列“达标代码”,并在达标代码单元格中输入“=VLOOKUP(F5,Sheet2!B2:C4,2,FALSE)”,通过vlookup函数将每个达标情况对应的code取出来


(3)将“达标代码”所在列隐藏,“Sheet2”隐藏,并发布此电子表格报表


5.接下来创建Excel导入模板,以上文中创建的电子表格为补录的模板。并且将隐藏的“达标代码”列导入到数据库的达标字段中。 

方案二,适用条件:原始Excel文从其他系统而来或由业务人员手工创建

场景:如果业务人员在进行批量导入时选择的Excel文件是自己创建的,那么这种情况下Excel里面的数据无法通过任何方式来操作。

只能通过定制的方式,在Excel导入模板中,通过代码中去查询达标情况对应的code,然后插入到数据库中。


  • 无标签