---
order: 4
navTitle: 填报数据
---
# 填报数据

报表填报应用提供了类Excel式的填报体验，与Excel有良好的交互性能够相互导入导出、粘贴数据，并且支持完备的逻辑校验规则来确保填报数据的质量等。本文主要介绍填报用户的各种填报体验以及相关功能用法。

## 数据的保存与提交{#submit}

报表填报应用通过**提交**和**保存**按钮将数据存储入库，两种方式存在以下区别：

1. 业务含义不同
   1. **提交**是确认上报当前单位的数据，代表当前存储的这份数据是有正式意义的。
   2. **保存**仅代表草稿，是最终提交数据的中间过程，一般是没填完时需要临时保存一下数据，不代表最终的正式数据。
2. 校验规则的判断
   1. 所有[错误](./design-fapp/validate.md#logic-rules)级别的校验规则都必须通过才允许**提交**，否则提交失败。
   2. **保存**时忽略所有配置的校验规则，只需要满足主键和业务键不为空且唯一索引不冲突即可。
3. 数据状态的写入
   1. **提交**时，数据的**提交状态**置`1`，**草稿状态**置`0`，代表当前数据是**已提交**的状态。
   2. **保存**时，数据的**提交状态**置`0`，**草稿状态**置`1`，代表当前数据是**填报中**的草稿。

### 明细数据整体上报{#total-submit}

当报表填报应用需要根据单位来上报明细数据时，比如要填报各单位下的人员信息，填报人员可能是一条一条填写后提交的或是直接批量导入的，在填报完明细后需要明确告诉上级单位当前单位数据都上报完了，需要将单位的上报状态修改为**已上报**，此时需要在明细列表中点击批量上报来修改填报单位的上报状态，如下动图操作所示：

![明细整体上报](./images/2024-06-19-09-30-00.gif)

示例地址：[明细整体上报](https://demo.succbi.com/v5/DEMO/app/ci.app?:id=%E5%8C%BB%E9%99%A2%E4%BA%BA%E4%BA%8B&:orgId=420000000009)

::: tip

1. 批量上报时会根据数据的校验状态来判断上报的这些数据是否符合规范，存在不符合规范的数据时无法上报成功。
2. 某些业务场景下可能存在单位下没有明细数据也是正常的情况，此时也可以在单位下上报空的明细数据代表这个单位已经确定填报过了，只是没有明细数据。

:::

### 提交后自动锁定{#auto-lock}

某些业务场景下，管理员会限制数据在提交后就不允许修改了，例如某些考核内容的填报，确定提交后数据就会**自动锁定**，填报用户只能查看不能再对填写的数据进行修改，除非管理员再次解锁了数据才允许继续修改。

## 填报浮动表数据{#floating-submit}

浮动表指的是在填报过程中能动态新增行列的表。可在表单工具栏中点击**添加行**，**删除行**按钮来控制浮动区域中的数据，也可通过[快捷键](#hotkey)来增删行：

![增删行列](./images/2024-06-20-09-20-00.gif)

### 数据的筛选和排序{#filter-and-order}

支持对浮动表做筛选和排序数据，不同列上的筛选条件共同作用，取AND的关系，操作如下图所示：

![筛选和排序](./images/2024-06-20-09-30-00.gif)

## 数据的复制粘贴{#copy}

报表填报应用支持与Excel进行数据交互，相互之间能够任意复制粘贴数据。与许多常见的复制粘贴规则不一样，将Excel数据粘贴到表单中时，有以下规则：

1. 只允许将数据粘贴到那些允许输入的单元格中。
2. 如果是将数据粘贴到**浮动表**中，则默认会按照主键或业务键进行**合并**，具体规则和导入浮动表一致，可参考后续章节[浮动表数据导入](#float-import)。
3. 将Excel数据粘贴到有下拉选项的单元格中时，报表填报应用能自动根据粘贴的内容找到对应的选项并将单元格的值替换为对应的代码值，如果粘贴的内容在选项中找不到会在单元格中提示选项不存在。

## 数据导入{#import}

报表填报应用支持和Excel文件做表样匹配并将匹配到的工作表中的内容直接导入到表单中，想要正常匹配到表样需要遵循以下规则：

1. Excel文件中的工作表名称需要与报表填报应用中对应要导入的工作表名称完全一致。
2. 在上一条的基础上，Excel中的表样结构必须与要导入的表单结构完全一致，不能存在某些标题单元格名称不一样或位置不一样的情况。

### 浮动表数据导入{#float-import}

导入浮动表数据时，总是依据浮动区域的**主键**或**业务键**来将导入的数据和浮动区域中已存在的数据进行**合并**，合并规则如下示意图所示：

![导入浮动表](./images/2024-06-19-09-10-00.png)

1. 以**主键**或**业务键**为依据判断是相同行的，导入的数据合并到浮动区域中，有差异的部分以导入的数据为准。
2. 判断是不同行的追加到浮动区域中。
3. 保留浮动区域内没有找到与导入数据有相同关系的行。

### 批量导入明细数据{#batch-import}

单位能够填报明细数据时，管理员可设置允许让填报用户批量导入单位下的明细数据，通常都会在工具栏中提供可供下载的导入模版，填报用户可下载模板后将需要导入的数据按照模版填充，然后再导入到报表填报应用中。具体效果如下所示：

![批量导入](./images/2024-06-19-09-40-00.gif)

示例地址：[批量导入](https://demo.succbi.com/v5/DEMO/app/ci.app?:id=%E5%8C%BB%E9%99%A2%E4%BA%BA%E4%BA%8B&:orgId=420000000009)

导入时支持选择导入的模式：

- **合并**：默认选项，覆盖重复的数据，追加不存在的数据。
- **覆盖**：删除所有已存在的数据，导入文件中所有数据。
- **追加**：忽略重复的数据，追加不存在的数据。

## 数据导出{#export}

报表填报应用支持导出数据，在**表单工具栏**>**更多菜单**中点击导出可显示导出对话框，支持自定义导出文件名、导出格式以及选择要导出的工作表等。

![数据导出](./images/2024-06-19-09-00-00.png)

::: tip 导出下拉选项

导出Excel文件时，支持导出单元格下拉选项，由于Excel的默认限制，目前导出的下拉选项总字符长度超过255时会无法导出。

:::

### 批量导出明细数据{#batch-export}

明细填报中允许用户导出自己权限范围内的明细数据，支持一键导出所有明细或是仅导出勾选的明细，在**明细列表工具栏**>**更多菜单**中点击批量导出，未勾选明细时导出所有明细，勾选后仅导出勾选的明细数据：

![批量导出](./images/2024-06-19-09-50-00.gif)

## 切换数据期{#period}

当填报的表单需要按照固定周期定期上报数据时，默认情况下打开表单时通常都会根据当前时间来填报最近的一期数据，比如月报，6月份打开的话就会默认填报6月份的数据，有时可能存在一些历史数据还没有填报的情况，此时可以在工具栏中切换到历史数据期来填写那一期的数据。

![切换数据期](./images/2024-06-20-09-00-00.png)

## 自定义冻结行列{#freeze}

当填报的表样较大在屏幕中无法完整显示时，滚动页面往往会导致一些关键信息例如一些标题单元格被滚动到无法看到的位置，从而难以分辨当前表单中的数据是属于哪些内容。上述情况下，可右键单元格设置**冻结窗格**，以冻结的单元格为基准，单元格前面的行或列在滚动页面时不会跟随滚动，效果如下所示：

![冻结行列](./images/2024-06-20-09-10-00.gif)

## 处理校验错误{#valid}

提交表单或点击工具栏中的校验按钮时，会触发报表填报应用的校验设置，当填写的数据不满足校验规则时，此时不允许提交表单数据。报表填报应用在填报过程中提供了校验列表来帮助用户快速定位和处理校验错误：

![校验](./images/2024-06-19-09-20-00.gif)

1. 点击**提交**，如果填报的内容不符合管理员定义的校验规则，此时会在所有有问题的单元格上做出标记，并在表单下方弹出校验列表来展示所有校验出错的地方。
2. 点击校验列表中的条目会自动定位到相关的校验错误的单元格，也可点击数据列中精准定位到错误数据的单元格。
3. 将内容修改正确后，单元格红色标记消失且错误的校验规则也从校验列表中消失。
4. 某些校验规则允许**特例说明**，在填写说明后即便这条规则在逻辑上仍无法通过，在提交时也会忽略这条规则。
5. 有些校验规则是**警告**级别的，即便不处理也不会影响数据的正常提交，只是提示某些内容可能不太合理但是也没有到错误的等级。

### 批量校验{#batch-valid}

批量校验可以针对一批单位数据进行快速校验，校验完成后会将校验结果告知给用户，并在数据列表中标注每行数据的**校验状态**，具体操作如下动图所示：

![批量校验](./images/2024-05-30-18-00-00.gif)

示例地址：[批量校验](https://demo.succbi.com/v5/DEMO/app/ci.app?:id=%E5%8C%BB%E9%99%A2%E4%BA%BA%E4%BA%8B&:orgId=420000000009)

批量校验返回结果后，点击对话框中的**下载校验结果**按钮，会得到一个展示所有校验错误内容的Excel文件，包含以下内容：

| 标题 | 描述 |
| :---- | :---- |
| 填报单位 | 填报单位的代码值，用于标识错误的数据属于哪家单位，该标题通常都有专门的业务名称，比如示例中是医疗机构 |
| 单位名称 | 单位对应的业务名称，作为单位代码的补充，只看单位代码很难明确是哪家单位的数据校验错误 |
| 明细代码 | 明细数据的代码值，用于标识错误的数据属于哪条业务明细，该标题通常有专门的业务名称，比如示例中是以人员的身份证号作为明细代码的 |
| 校验公式ID | 校验规则的编号，用于帮助用户快速找到是哪条校验规则出错了 |
| 校验信息 | 校验规则的提示信息，通常是告知用户具体什么错了的业务说明 |
| 校验公式 | 校验规则的逻辑判断公式 |
| 校验数据 | 校验规则中所有相关的用来判断是否通过校验的数据，帮助用户明确具体是哪部分内容错误导致的校验不通过 |
| 例外说明 | 用户手工输入的特例说明 |

## 快捷键{#hotkey}

填报界面快捷键：

| 功能 | Windows/Linux | macOS |
| :---------- | :---- | :---- |
| 横向定位下一个单元格 | `Tab` | `Tab` |
| 横向定位上一个单元格 | `Shift+Tab` | `Shift+Tab` |
| 纵向定位下一个单元格 | `Enter` | `Enter` |
| 纵向定位上一个单元格 | `Shift+Enter` | `Shift+Enter` |
| 焦点单元格朝指定方向移动 | `方向键` | `方向键` |
| 滚动到焦点单元格所在行列指定方向第一个单元格 | `Ctrl+方向键` | `Ctrl+方向键` |
| 清空单元格内容 | `Delete`/`Backspace` | `Delete`/`Backspace` |
| 撤销 | `Ctrl + Z` | `Command + Z` |
| 重做 | `Ctrl + Y` | `Command + Y` |
| 全选 | `Ctrl + A` | `Command + A` |
| 复制 | `Ctrl + C` | `Command + C` |
| 剪切 | `Ctrl + X` | `Command + X` |
| 粘贴 | `Ctrl + V` | `Command + V` |
| 当前行上面插入一行 | `Ctrl + Shift + Up` | `Command + Shift + Up` |
| 当前行下面插入一行 | `Ctrl + Shift + Down` | `Command + Shift + Down` |
| 当前列左边插入一列 | `Ctrl + Shift + Left` | `Command + Shift + Left` |
| 当前列右边插入一列 | `Ctrl + Shift + Right` | `Command + Shift + Right` |
| 删除行列 | `Alt + R` | `Alt + R` |
| 显示下拉面板 | `Alt + Down` | `Alt + Down` |
| 关闭下拉面板/退出编辑状态 | `Esc` | `Esc` |
