2.0 KiB
2.0 KiB
7.4 数据导入导出
:::tip 概述
Excel 能力基于 excelize 封装(utility/excel):ReadSheet 读表(剥表头、跳空行)、WriteSheet 写表落盘返回文件。后端手写导入导出逻辑,前端配套导入组件与下载工具。
:::
后端 API(utility/excel)
| 函数 | 说明 |
|---|---|
| ReadSheet(file) | 读首个工作表:返回 headers + rows(首行表头剥离、空行跳过) |
| WriteSheet(dir, baseName, headers, rows) | 写 xlsx 到指定目录,返回 fileName/filePath |
导入范式(以 example 为例)
dto:ExampleImportReq{ File *multipart.FileHeader } + UnmarshalBody
↓
service.Import:
ReadSheet 拿 rows
逐行校验(必填、格式)→ 合法行 Create,失败行记录原因(含工作表行号)
无事务:逐行独立写入,失败行不影响已写入行
↓
返回 {Total, Success, Failed, Reasons[]} + ResMsg 提示语
导出范式
service.Export:
复用基座 exampleSpec.applyFilters(与分页同口径的查询条件)
DictGetText 翻译枚举列(与 SerializeMaps 同字典)
WriteSheet 落盘 → upload.GetFileUrl 返回访问 URL
↓
前端拿到 URL → download 工具落盘
约定
| 约定 | 说明 |
|---|---|
| 查询同口径 | 导出条件与分页请求字段一致(用户所见即所导) |
| 行号折算 | 失败提示行号 = 数据序号 + 2(含表头) |
| 无事务导入 | 大文件不占长事务;结果汇总告知成败 |
| 模板同源 | 导入模板经文件模板管理下载(6.21),列头与解析一致 |
前端配套
- Excel 组件(
components/Excel):导入解析预览、导出生成 - importFile 组件:导入上传交互
- downloadFile 工具:URL 文件落盘
相关
- 3.5 业务层开发(service)(手写导入导出完整实现)