1. 概述
1.1 版本
报表服务器版本 | JAR 包版本 | 插件版本 |
---|---|---|
10.0 | 2021-08-26 | v1.6 |
1.2 应用场景
Excel标记导入通过标手动标记加智能识别的方式,实现Excel数据导入。整合了所有原有的Excel导入逻辑和导入方式的基础上,操作更智能,功能更强大,场景更丰富。
1.3 名词解释
标题区域:表格中的表头部分
内容区域:表格中的数据部分
内容区域外部分:表格中不规则的内容部分
1.4 功能描述
主要支持以下场景
支持清空、覆盖、增量三种导入方式
支持纵向、横向两种导入方向
支持多sheet导入场景
支持自定义导入Excel的实际值/显示值
支持将导入值按照形态设置转为实际值入库
不支持的场景如下:
不支持新填报预览和移动端预览
不支持断开的导入区域
不支持导入图片
不支持存在斜线的表头单元格
不支持导入内容区域的合并单元格,会自动拆成列表
尽可能使用Microsoft Excel 2007及以上版本,对于WPS Excel和Microsoft Excel低版本不保证兼容。
2. 插件介绍
2.1 插件安装
点击下载插件:Excel标记导入
设计器插件安装方法请参见:设计器插件管理
服务器安装插件方法请参见:服务器插件管理
2.2 模板设计规范
模板中需要导入数据的列(行),需要和Excel中对应数据列标题保持一致,导入时会按照标题匹配
模板中内容区域的单元格,需要设置成可扩展
模板中内容区域存在数据集字段时,需设置成列表展示
内容区域外部分,待导入内容的单元格在设计器中需要初始化(可以任意设置单元格后保存),未初始化会导致导入失败
2.3 基础使用方法(必要)
说明:以下操作步骤为必要项,不可省略,否则不能正常导入。
1)找到设置入口:「模板>Excel导入标记」
注:若模板有多个sheet需要导入,则每个sheet页都需要单独设置导入标记,否则前端导入时选不到该sheet。
2)导入标记设置:选择标题&内容区域
格式说明:【A1:D2】指A1为起点,D2为终点的4×2单元格区域
3)添加标记导入按钮,完成配置
打开「模板>模板web属性>填报页面设置」,选择「为该模板单独设置」,双击「标记导入」添加到工具栏。
4)预览模板,测试业务导入的效果
2.4 进阶使用方法(可选项)
2.4.1 Excel导入标记设置
注:sheet表设置内的配置项,只针对当前sheet生效;模板设置内的配置项,对当前模板所有sheet生效
设置名称 | 说明 | 适用场景 |
---|---|---|
导入方向 | 默认选择纵向。 根据数据扩展方向选择,分为纵向和横向,大部分导入Excel场景都适用「纵向」。 | 纵向(预览时标题为横向,而数据需要纵向导入) 横向(预览时标题为纵向,而数据需要横向导入) |
智能识别Excel标题区域和内容区域 | 默认开启智能识别 “Excel标题区域”用于提升识别效率——标记的范围越精准,识别越快。可以不填写,或不精准填写。 | 适用于大部分场景,能有效降低业务用户操作成本 |
导入方式 | 默认清空导入。 共有三种导入方式:清空、增量、覆盖,支持多选。
每次导入前先清空内容区域,而其他区域不会被清空,最后只保留当次Excel中导入的内容。 注:该清空只是清空页面数据,若想清空对应数据库表数据,可以参考导入Excel提交前清空数据库表
将Excel中的数据导入时,会根据位置覆盖掉相同位置的页面数据。如果页面原有数据行/列多于Excel,则多出部分会保留在页面
每次导入 Excel 时,都会在结尾行扩充增加 Excel 导入的内容。 |
|
支持导入内容区域外的部分 | 默认不勾选。 勾选后,会将Excel中内容区域以外的内容进行导入,且这部分在导入时执行按照位置匹配 | 适用于Excel除了标题和内容行列外,有固定内容的场景,希望直接按照位置导入,比如落款或日期等。 |
将数据转换为实际值提交 | 默认不勾选。 勾选后,可以将Excel导入的值,根据自定义的「单元格形态-数据字典」转换为想要的实际值来入库。比如导入的是男、女,入库的是1、2。具体使用方法可参考:Excel导入显示值转换。 勾选后,数据校验时也会将导入值转为实际值来处理。 | 适用于入库时,想将数据根据自定义的规则转换为另一个值提交的场景。比如导入的是男、女,入库的是1、2。 |
多sheet导入逻辑 | 默认按sheet名进行匹配 共有三种多sheet导入逻辑:按sheet名匹配、按sheet位置进行匹配、手动匹配 |
|
默认以智能识别结果导入 | 默认开启 |
|
2.4.2 单元格设置
设置位置 | 说明 | 适用场景 |
---|---|---|
默认为显示值。 可以自定义针对内容区域的单元格设置导入Excel的显示值还是实际值。 | Excel中的单元格存在实际值和显示值,希望导入时能自定义导入其中的一种,如下图: |
2.4.3 导入时设置
设置入口为填报预览时点击工具栏的「标记导入」,根据模板中「Excel导入标记」的设置,会呈现不同的配置项组合。
设置名称 | 说明 |
---|---|
sheet名称 | 会自动读取Excel中的所有sheet以供选择勾选,在导入时会将勾选的sheet按设置进行导入。 如果Excel仅有一个sheet,则会自动选中该sheet。 |
标题区域 | 用于标记Excel中的标题区域,例如A1:D1,不支持断开的区域。 如果模板设置了「智能识别Excel标题区域和内容区域」,则会自动识别Excel的标题区域,并支持用户修改。 |
内容区域 | 用于标记Excel中的内容区域,例如A2:D2,不支持断开的区域。 如果模板设置了「智能识别Excel标题区域和内容区域」,则会自动识别Excel的内容区域,并支持用户修改。 |
导入位置 | 标记需要导入到模板中的哪个sheet。 注:如果下拉列表为空,有可能是模板未设置Excel导入标记,可参考2.3设置 |
导入方式 | 设置导入方式,此处的可选项为「导入方式」所设置的导入方式。 |
保存设置 | 类似于暂存,会根据用户名和模板名称,记住本次的导入设置。 勾选后在下次导入时,会保留上一次的设置。去除勾选后,则会清空当前用户对此模板的所有导入设置。 当勾选该设置后,后续导入时「智能识别Excel标题区域和内容区域」将不再生效,会优先读取保存的设置。 |
3. 不同导入场景与推荐的功能配置
3.1 根据业务前端配置的自由度
业务前端确认项 | 设计器导入配置 | 业务导入操作效果 |
---|---|---|
直接导入,无需确认和修改(高便捷度低自由度) | 除了标题区域和内容区域,都采用默认设置 | |
根据需求,部分自定义(成本适中) ——默认按照智能识别的结果进行导入 | ① 自定义多sheet导入时匹配关系 ② 自定义选择每个sheet的导入方式 ③ 多sheet匹配关系和导入方式支持同时自定义(即以上两个设置都勾选) | ① 需要手动匹配sheet页 ② 需要手动选择导入方式 ③ 手动匹配sheet页+选择导入方式 |
根据需求,部分自定义(成本适中) ——多sheet匹配关系默认&导入方式唯一 | 导入方式唯一& 多sheet匹配关系默认,需要确认标题/内容 注:也支持导入方式唯一或匹配关系默认时,另外的两个配置项需要前端确认,此处省略示例 | |
全部自定义导入(高自由度低便捷度)
|
3.2 根据导入场景(以下都默认按照智能识别结果导入)
导入场景 | 设计器导入标记 | 业务导入操作 | 示例文件下载 |
---|---|---|---|
单sheet、单行表头 | 按照基础使用方法进行配置即可 | 默认智能识别结果,不需要业务前端确认 | |
单sheet、单行表头+内容区域外部分 | 需要开启“支持导入内容区域外的部分” | 默认智能识别结果,不需要业务前端确认 | |
自由报表,不存在扩展单元格 | 把大标题作为标题区域,空白行作为内容区域,其他固定单元格作为内容外区域导入 | ||
多层表头 | 大标题作为内容外区域,多层表头都作为标题区域 | ||
横向导入 | 导入方向设置为“横向” |
4.接口与数据存储
4.1 JS接口
FR.MarkExcelImport.markImportExcel()
使用场景:自定义按钮进行导入
4.2 导入配置存储位置
在导入时勾选保存设置后,会将相关信息存储到finedb中,具体位置如下图所示:
fine_excel_mark_conf 表
fine_excel_mark_sheet_conf 表