导入模板配置
在将数据导入到系统中前需要配置导入模板。模板支持Excel文件。
场景需求
我们有大量的数据保存在Excel表中,需要快速的将离线数据导入到系统上。导入数据的操作分为两个环节,首先需要创建导入模板,再进行数据导入操作。这里介绍的是创建导入模板的配置方法。
导入模板Excel数据格式
应用表单中有没有子表,都支持导入。对于导入Excel模板,支持3种格式:单sheet,不合并表头,单sheet,合并表头,多sheet
单sheet,不合并表头:所有数据都保存在一个sheet中,每条数据都独立保存,即使相同数据的部分也是独立显示的。
单sheet,合并表头:所有数据都保存在一个sheet中,且相同数据的部分进行了合并显示。
多sheet:表头一般都显示在第一张sheet中,通过关联字段和其它sheet中的值做对应
[!TIP|style:flat] 支持子表导入的层级为2,即主表->子表->子子表
创建模板
需要为不同格式的Excel配置不同的导入模板。不合并表头的Excel表需要考虑查重,否则不合并的数据会被当做有效数据写入产生多份拷贝。多sheet的Excel,需要指定sheet之间的关联字段,从而建立sheet之间数据的关联关系。
[!DANGER|style:flat]
- 上一级表中必须包含一个唯一标识字段,下一级子表才能导入,因为导入下级子表时需要找到数据的关联关系
- 下一级表中的字段,必须包含(关联组件中需要选中)在上一级表中,否则字段将不会被导入
单sheet,不合并表头模板
选择配置Excle文件
先从左侧菜单选择导入数据主表(主表为必选),再在右侧选择导入数据源,即数据对应的sheet。当sheet中的表头字段被解析出来后,将其一一与表中的数据字段做映射。表头,默认是第一行,也可以输入表头行的行号,点确定后会再次加载数据,新的表头会显示在表头区域。确认表头位置后,点击下一步。
记录查重配置项,应该被设置“查重”否则,没有合并的字段(本案例中的“订单编号”“送货地址”)会被多次导入到系统中,查重依据选择未被合并的字段中的一个即可
从菜单中选择子表,数据源不用改动,因为是单sheet
如果主表和子表的数据都在同一个sheet中,可以配置是否容许用户选择其它sheet来进行数据导入。因为,制作模板的时候,系统会记忆sheet的一些参数,防止用户在导入数据的时候错误的选择了sheet导致数据导入错误,但也限制了导入数据的灵活性,只是在主子表同sheet的时候可以有这个选项
导入数据后,如果需要触发工作流,可以在这个环节配置工作流。例如:导入数据后,通知相关人员,或者执行某个审批流程。
配置完成后点击确认
单sheet,合并表头模板
上传包含数据表头(结构)的Excel文件
选择导入到主表,选择导入数据源为sheet1,可以看到Excel中原本是合并的表头数据被拆分成独立的单条,形成了和【单sheet,不合并表头】模板类似的数据结构
因此,这里也需要配置查重
然后选择导入子表,和对应的数据源,还是sheet1
多sheet模板
导入多sheet的Excel表时,子表中,应该有对应主表的关联字段
且在主表的关联组件中有勾选引用
表单定义确认好后,上传对应的Excel文件配置数据导入模板
选择导入表单,选择对应数据源sheet1,配置字段映射,指定主表和子表关联的字段
选择导入子表表单,选择对应数据源sheet2,配置字段映射
配置字段映射后,配置数据导入策略。这里有三个点,需要确定:
- 往子表中写入数据,是否是有条件写入?默认是将所有数据无条件都写入。但也会遇到场景需要在某个主表字段值为“整机”/“零件”选择写入或者不写入子表中;
- 配置查询到多条主表(上一级表单)记录时,选择复制当前表记录,或者引用当前表记录。
- 导入策略,指写入数据时候的追加或者覆盖行为。
- 去重后追加导入:逐条对比新旧数据,根据查重策略合并重复记录后,追加写入
- 更新重复,忽略新增:逐条对比新旧数据,更新旧数据,忽略新数据
- 不去重追加导入:留存旧数据,写入新数据
- 覆盖导入:删除旧数据,写入新数据
如果,在导入子表数据时,发现有多条主表(上一级表表单)记录,选择“复制当前表记录”会复制数据记录,选择“引用当前表记录”会替换原有关联的数据记录
导入数据
以导入【单sheet,不合并表头】格式Excel数据为例。
在待导入数据的表单上,点击“导入”按钮。
将待导入Excel文件拖入导入弹窗
检查导入时的数据查重和异常处理逻辑
导入数据完成后,在导入历史列表中可以查看导入结果
刷新页面后,就可以看到导入的数据了
进入详情后,可以看到导入的子表数据
对于有构建权限的用户,还可以在子表对应的表单中查看数据记录