원클릭으로
wps-data-clean
表格数据清洗。清理表格中的格式问题,如手机号、身份证、日期格式不统一, 去除多余空格和重复行,支持中国特色数据格式。 用于帮助用户清洗修复表格数据。当用户提到数据清洗、去重、格式统一时触发。 Spreadsheet data cleaning tool.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
表格数据清洗。清理表格中的格式问题,如手机号、身份证、日期格式不统一, 去除多余空格和重复行,支持中国特色数据格式。 用于帮助用户清洗修复表格数据。当用户提到数据清洗、去重、格式统一时触发。 Spreadsheet data cleaning tool.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
考勤打卡统计。把考勤机导出的打卡数据丢进来,自动统计每个人的 迟到、早退、缺勤、加班时长,生成月度考勤汇总表,异常考勤自动标红。 用于帮助HR处理考勤数据。当用户提到考勤、打卡、迟到、加班统计时触发。 Attendance tracker - generates summary reports from clock-in records.
文档批量格式转换。把一个文件夹里的Word全转文本、Excel全导出CSV、 Markdown转Word,支持docx/txt/xlsx/csv/md等格式批量互转,一次搞定。 用于帮助用户批量转换文档格式。当用户提到批量转换、格式转换、导出时触发。 Batch converts documents between formats (docx/pdf/xlsx/csv/md).
预算表一键生成。部门年度预算、项目预算、活动经费预算,选个模板填数字就行, 小计合计公式自动写好,还有预算vs实际对比和执行率自动计算。 用于帮助财务和行政制作预算表。当用户提到预算、费用表、经费时触发。 Budget spreadsheet generator with formulas and variance analysis.
证书奖状批量生成。给一份名单,批量生成荣誉证书、结业证书、聘书、感谢信, 每人一份独立文件,年终评优、培训结业、表彰活动必备工具。 用于帮助用户批量生成证书。当用户提到证书、奖状、聘书时触发。 Batch certificate/award generator from a list of recipients.
数据图表一键生成。不知道数据该用什么图表?告诉我你的数据和目的, 自动推荐最佳图表类型并生成,柱状图折线图饼图散点图都支持,还帮你调配色。 用于帮助用户制作数据可视化图表。当用户提到图表、柱状图、折线图、饼图时触发。 Chart generator - recommends best chart type and creates professional charts.
日历排班值班表。生成带法定节假日和调休标注的月度/年度日历表, 还能做三班倒/两班倒排班表和节假日值班安排,颜色区分不同班次一目了然。 用于帮助用户生成日历和排班表。当用户提到日历、排班、值班、节假日时触发。 Chinese calendar with holidays, shift scheduling, and duty rosters.
| name | wps-data-clean |
| description | 表格数据清洗。清理表格中的格式问题,如手机号、身份证、日期格式不统一, 去除多余空格和重复行,支持中国特色数据格式。 用于帮助用户清洗修复表格数据。当用户提到数据清洗、去重、格式统一时触发。 Spreadsheet data cleaning tool. |
| license | MIT |
| user-invocable | true |
| argument-hint | [清洗需求描述] [文件路径(可选)] |
| allowed-tools | Read, Grep, Glob, Bash, Write, Edit |
| metadata | {"author":"BWKYD","title":"表格数据清洗","description_zh":"清理表格中的格式问题,如手机号、身份证、日期格式不统一等","tags":["数据清洗","WPS","表格","openpyxl","去重"],"version":"1.0.2","license":"MIT"} |
一键清洗杂乱的表格数据,让脏数据变成可用数据。
wps-formulawps-pivotwps-chart| 操作 | 说明 | 适用场景 |
|---|---|---|
| 去重 | 按指定列删除重复行 | 导入数据有重复记录 |
| 去空行 | 删除全空行或指定列为空的行 | 数据中间有空行 |
| 去空格 | 去除首尾空格、多余空格 | 文本前后有隐藏空格 |
| 去特殊字符 | 清除不可见字符、换行符 | 从网页/PDF复制的数据 |
| 统一大小写 | 全大写/全小写/首字母大写 | 英文数据不统一 |
| 繁简转换 | 繁体中文→简体中文 | 港台数据导入 |
| 数据类型 | 清洗规则 | 示例 |
|---|---|---|
| 手机号 | 去空格/横杠,补+86,验证11位 | 138-1234-5678 → 13812345678 |
| 身份证号 | 去空格,验证18/15位,校验末位 | 110101 1990 0101 001X → 11010119900101001X |
| 日期 | 统一为 YYYY-MM-DD 或 YYYY年M月D日 | 2024/3/5 2024.03.05 → 2024-03-05 |
| 金额 | 去逗号/¥/元,统一为数值 | ¥1,234.56元 → 1234.56 |
| 性别 | 统一为 男/女 | M/F male/female 1/0 → 男/女 |
| 省市区 | 补全省市区层级 | 朝阳区 → 北京市朝阳区 |
| 姓名 | 去空格,去称呼后缀 | 张 三先生 → 张三 |
| 邮箱 | 去空格,转小写,验证格式 | ABC@Gmail.COM → abc@gmail.com |
| 操作 | 说明 |
|---|---|
| 拆分列 | 一列拆多列(如姓名→姓+名,地址→省+市+区) |
| 合并列 | 多列合一列(如姓+名→姓名) |
| 取消合并单元格 | 合并单元格→填充每个子单元格 |
| 转置 | 行列互换 |
| 宽表转长表 | 多列月份→日期+值的两列 |
| 长表转宽表 | 日期+值→多列月份 |
如果用户提供了文件:
pip install openpyxl 2>/dev/null || pip3 install openpyxl 2>/dev/null
读取文件并输出数据诊断报告:
📊 数据诊断报告
═══════════════════════════════════
文件:[文件名]
工作表:[Sheet名]
行数:[X] 行(含表头)
列数:[X] 列
🔍 发现的问题:
┌─────────────────────────────────┐
│ ⚠️ 重复行:XX 行(占比 XX%) │
│ ⚠️ 空行:XX 行 │
│ ⚠️ A列有 XX 个空值 │
│ ⚠️ B列(手机号)格式不统一:XX 个 │
│ ⚠️ C列(日期)格式混乱:XX 个 │
│ ✅ D列(金额)格式正常 │
└─────────────────────────────────┘
📋 建议清洗操作:
1. 删除 XX 行完全重复数据
2. 删除 XX 行空行
3. 标准化手机号为11位数字
4. 统一日期格式为 YYYY-MM-DD
向用户展示诊断报告,确认要执行的清洗操作。
根据场景选择技术路线:
| 场景 | 技术路线 | 输出 |
|---|---|---|
| 有 .xlsx 文件在磁盘上 | openpyxl脚本 | 清洗后的新 .xlsx 文件 |
| 用户在WPS中打开了表格 | JSA宏 | 粘贴到WPS宏编辑器运行 |
| 仅描述需求,无文件 | JSA宏模板 | .js文件供用户使用 |
openpyxl 清洗脚本模式:
import openpyxl
import re
from copy import copy
def clean_spreadsheet(input_path, output_path=None):
wb = openpyxl.load_workbook(input_path)
ws = wb.active
if not output_path:
output_path = input_path.replace('.xlsx', '_cleaned.xlsx')
stats = {'removed_duplicates': 0, 'removed_blanks': 0,
'fixed_phones': 0, 'fixed_dates': 0}
# === 去重 ===
seen = set()
rows_to_delete = []
for row_idx in range(2, ws.max_row + 1): # 跳过表头
row_data = tuple(ws.cell(row=row_idx, column=c).value
for c in range(1, ws.max_column + 1))
if row_data in seen:
rows_to_delete.append(row_idx)
stats['removed_duplicates'] += 1
else:
seen.add(row_data)
# 从后往前删除(避免索引偏移)
for row_idx in reversed(rows_to_delete):
ws.delete_rows(row_idx)
# === 去空行 ===
rows_to_delete = []
for row_idx in range(2, ws.max_row + 1):
if all(ws.cell(row=row_idx, column=c).value is None
for c in range(1, ws.max_column + 1)):
rows_to_delete.append(row_idx)
stats['removed_blanks'] += 1
for row_idx in reversed(rows_to_delete):
ws.delete_rows(row_idx)
# === 清洗各列 ===
# 根据实际列内容动态清洗
wb.save(output_path)
return output_path, stats
手机号标准化函数:
def clean_phone(value):
"""标准化中国大陆手机号"""
if value is None:
return value
s = re.sub(r'[\s\-\+\(\)()]', '', str(value))
s = re.sub(r'^86', '', s)
s = re.sub(r'^\+86', '', s)
if re.match(r'^1[3-9]\d{9}$', s):
return s
return str(value) # 无法识别的保留原值
身份证号标准化函数:
def clean_id_card(value):
"""标准化身份证号"""
if value is None:
return value
s = re.sub(r'\s', '', str(value)).upper()
if re.match(r'^\d{17}[\dX]$', s):
return s
if re.match(r'^\d{15}$', s):
return s # 一代身份证
return str(value)
日期标准化函数:
def clean_date(value, output_format='%Y-%m-%d'):
"""统一日期格式"""
if value is None:
return value
if isinstance(value, datetime):
return value.strftime(output_format)
s = str(value).strip()
formats = [
'%Y-%m-%d', '%Y/%m/%d', '%Y.%m.%d',
'%Y年%m月%d日', '%d/%m/%Y', '%m/%d/%Y',
'%Y%m%d', '%d-%m-%Y',
]
for fmt in formats:
try:
return datetime.strptime(s, fmt).strftime(output_format)
except ValueError:
continue
return s # 无法解析的保留原值
✅ 清洗完成!
═══════════════════════════════════
输入文件:data.xlsx(1000行)
输出文件:data_cleaned.xlsx(856行)
📊 清洗统计:
🗑️ 删除重复行:89 行
🗑️ 删除空行:55 行
📱 修复手机号:123 个
📅 修复日期格式:67 个
✂️ 去除首尾空格:234 个
⚠️ 请用WPS打开 data_cleaned.xlsx 确认结果
# 清洗指定文件
/wps-data-clean 清洗 sales_data.xlsx,去重并标准化手机号
# 生成清洗宏(在WPS中运行)
/wps-data-clean 写一个JSA宏,去除当前表格中的所有空行和重复行
# 描述需求
/wps-data-clean 我有一个客户表,手机号格式混乱(有的带横杠有的带+86),帮我统一
中国数据格式标准见 reference/cn-data-formats.md。