data-validator — Excel 数据验证助手
工作流程
- 接收用户输入:Excel 文件路径 + 各列的自然语言描述
- 读取 Excel:提取列名列表
- LLM 生成 Schema:将列描述转为结构化 JSON Schema
- 逐单元格验证:按 Schema 规则校验每个单元格
- 输出标注文件:生成新 Excel,错误单元格加红色背景 + 批注(❗error | 原因)
调用方式
在 Claude Code 中触发:
/data-validator
或者直接说:
- "帮我验证这个 Excel"
- "校验数据列"
- "按描述检查数据"
交互流程
1. 收集信息
你需要向用户确认:
请提供以下信息:
1. Excel 文件路径
2. 各列的描述文本(自然语言即可,如:
"学号:必填,8位数字
姓名:必填,中文
年龄:选填,0-150 的整数
邮箱:选填,邮箱格式
性别:必填,男或女
成绩:选填,0-100 的数字")
2. 生成 Schema
读取 Excel 获取列名。用 LLM 将用户描述转为 JSON Schema,格式:
{
"学号": { "type": "string", "required": true, "pattern": "^\\\\d{8}$", "description": "学号:必填,8位数字" },
"姓名": { "type": "string", "required": true, "description": "姓名:必填,中文" },
"年龄": { "type": "integer", "required": false, "min": 0, "max": 150 },
"邮箱": { "type": "string", "required": false, "format": "email" },
"性别": { "type": "enum", "required": true, "values": ["男", "女"] },
"成绩": { "type": "number", "required": false, "min": 0, "max": 100 }
}
支持的数据类型:
| type | 说明 | 可选参数 |
|------|------|----------|
| string | 字符串 | pattern, format(email/url 兼容旧版) |
| integer | 整数(正则匹配,支持负数) | min, max |
| number | 浮点数(正则匹配,支持负数) | min, max |
| boolean | 布尔值(是/否/true/false) | — |
| enum | 枚举单选 | values(必填) |
| date | 日期 YYYY-MM-DD 或 YYYY-M-D | — |
| year | 4位年份 | — |
| email | 邮箱格式 | — |
| url | URL 格式(http/https) | — |
| multipleChoice | 枚举多选(逗号分隔) | values(必填) |
所有字段都支持 required: true/false。
3. 执行验证
- 将 Schema 写入临时 JSON 文件(如
validate_schema.json) - 运行验证脚本(路径相对于 SKILL.md 所在目录):
python scripts/validate_data.py <input.xlsx> validate_schema.json [output.xlsx] - 读取输出,把结果呈现给用户
4. 输出结果
告诉用户:
- 总检查了多少单元格
- 发现多少错误
- 输出文件路径
注意事项
- 依赖
openpyxl,如未安装先运行pip install openpyxl>=3.1.0 - 只处理
.xlsx格式,不支持.xls - 第一行必须是表头
- 生成的是新文件,不会覆盖原文件
- 列名匹配是精确匹配(去掉首尾空格后比较)
微信扫一扫