更新记录
1.1.0(2026-09-02)
- 新增CSV/TXT文件选择与UTF-8文本读取。
- 新增文本、数字、整数、布尔值和日期类型转换。
- 新增必填、唯一值、正则格式校验与字段别名自动匹配。
- 新增有效行/错误行分离、错误明细展示和错误CSV复制导出。
- 新增字段映射方案本地保存与自动恢复。
- 优化未闭合引号、文件大小和读取失败提示。
1.0.0(2026-09-01)
首次发布,支持CSV解析、分隔符自动识别、数据预览、字段自动匹配、手动映射和结构化数据输出。
平台兼容性
uni-app x(5.24)
| Chrome | Safari | Android | iOS | 鸿蒙 | 微信小程序 |
|---|---|---|---|---|---|
| √ | - | √ | - | - | √ |
其他
| 多语言 | 暗黑模式 | 宽屏模式 | 蒸汽模式 |
|---|---|---|---|
| × | × | √ | × |
CSV文件导入、校验与字段映射(uni-app x)
适用于通讯录、商品、库存、订单和后台数据导入。组件支持直接选择CSV/TXT文件或粘贴CSV文本,在设备本地完成解析、字段映射、类型转换、数据校验和错误行整理。
主要功能
- 选择UTF-8编码的CSV/TXT文件,默认最大5MB,也可粘贴文本。
- 自动识别逗号、制表符、分号和竖线分隔符。
- 正确处理双引号字段、字段内换行、逗号和连续双引号转义。
- 通过字段名称、key或别名自动匹配,支持手动调整。
- 支持文本、数字、整数、布尔值和日期类型转换。
- 支持必填、唯一值和正则表达式格式校验。
- 有效行和错误行自动分离,展示具体行号与原因。
- 一键复制带“错误原因”列的错误CSV,也可通过事件自行保存。
- 映射方案保存在设备本地,下次导入相同表头时自动恢复。
- 零网络请求、零第三方依赖,CSV数据不上传服务器。
基本用法
<dz-csv-mapper-x
:target-fields="fields"
:preview-limit="5"
storage-key="customer-import-mapping"
@parsed="handleParsed"
@validated="handleValidated"
@confirm="handleConfirm"
@export-errors="handleExportErrors"
@error="handleError"
/>
type CsvTargetField = {
key: string
label: string
required?: boolean
type?: string
unique?: boolean
pattern?: string
patternMessage?: string
aliases?: string[]
}
const fields: CsvTargetField[] = [
{ key: 'name', label: '姓名', required: true, aliases: ['客户姓名', '联系人'] },
{
key: 'mobile',
label: '手机号',
required: true,
unique: true,
pattern: '^1\\d{10}$',
patternMessage: '请输入11位手机号',
aliases: ['手机', '电话']
},
{ key: 'age', label: '年龄', type: 'integer' },
{ key: 'enabled', label: '启用', type: 'boolean' },
{ key: 'birthday', label: '生日', type: 'date' },
{ key: 'city', label: '城市' }
]
function handleConfirm(payload: UTSJSONObject) {
const validData = payload['data'] as UTSJSONObject[]
const invalidRows = payload['invalidRows'] as UTSJSONObject[]
const errors = payload['errors'] as UTSJSONObject[]
console.log(`有效${validData.length}行,错误${invalidRows.length}行`)
}
字段配置
| 属性 | 类型 | 说明 |
|---|---|---|
key |
string | 输出对象的字段名,必填 |
label |
string | 界面显示名称,必填 |
required |
boolean | 是否必填 |
type |
string | string、number、integer、boolean或date |
unique |
boolean | 是否检查同批数据中的重复值 |
pattern |
string | 文本字段正则表达式 |
patternMessage |
string | 正则校验失败提示 |
aliases |
string[] | 用于自动匹配的表头别名 |
布尔值支持:true/false、1/0、yes/no、是/否。日期转换成功后输出ISO 8601字符串。
组件属性
| 属性 | 默认值 | 说明 |
|---|---|---|
target-fields |
- | 目标字段配置,必填 |
preview-limit |
5 |
数据预览行数 |
error-preview-limit |
8 |
错误明细预览条数 |
storage-key |
dz-csv-mapper-x:mapping |
映射方案本地存储键;多个导入业务应分别设置 |
max-file-size |
5242880 |
文件大小上限,单位字节 |
placeholder |
内置文案 | 文本框占位提示 |
事件
parsed:解析完成,返回headers、rows、delimiter。validated:校验完成,返回全部错误明细。confirm:返回data(有效数据)、invalidRows、errors、mapping和source。export-errors:点击复制错误CSV时返回csv和errors,宿主可另行保存或分享文件。error:解析、文件读取或配置操作失败。
公开方法
loadText(text, autoParse):由宿主传入CSV文本。parseInput():解析当前文本。getMappedData():执行校验并返回全部转换后数据。getInvalidCsv():取得带错误原因的CSV字符串。saveMapping()/restoreMapping():保存或恢复映射方案。
平台与隐私
文件选择依赖 uni.chooseFile,最低要求HBuilderX 5.24。当前重点支持Chrome、Android和微信小程序;iOS与鸿蒙暂标记为待验证。
插件只读取用户主动选择的本地文件。CSV内容只在设备内存中处理;映射关系使用 uni.setStorageSync 保存在设备本地,不联网、不上传、不采集用户数据。

收藏人数:
购买源码授权版(
试用
赞赏(0)
下载 0
赞赏 0
下载 12687308
赞赏 1956
赞赏
京公网安备:11010802035340号