wps-attendance
考勤打卡统计。把考勤机导出的打卡数据丢进来,自动统计每个人的 迟到、早退、缺勤、加班时长,生成月度考勤汇总表,异常考勤自动标红。 用于帮助HR处理考勤数据。当用户提到考勤、打卡、迟到、加班统计时触发。 Attendance tracker - generates summary reports from…
表格数据清洗。清理表格中的格式问题,如手机号、身份证、日期格式不统一, 去除多余空格和重复行,支持中国特色数据格式。 用于帮助用户清洗修复表格数据。当用户提到数据清洗、去重、格式统一时触发。 Spreadsheet data cleaning tool.
$ npx -y skills add Bwkyd/wps-skills --skill wps-data-clean --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/wps-data-cleanContext preview
The summary Claude sees to decide when to auto-load this skill.
表格数据清洗。清理表格中的格式问题,如手机号、身份证、日期格式不统一, 去除多余空格和重复行,支持中国特色数据格式。 用于帮助用户清洗修复表格数据。当用户提到数据清洗、去重、格式统一时触发。 Spreadsheet data cleaning tool.
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一键清洗杂乱的表格数据,让脏数据变成可用数据。
| 操作 | 说明 | 适用场景 | |------|------|---------| | **去重** | 按指定列删除重复行 | 导入数据有重复记录 | | **去空行** | 删除全空行或指定列为空的行 | 数据中间有空行 | | **去空格** | 去除首尾空格、多余空格 | 文本前后有隐藏空格 | | **去特殊字符** | 清除不可见字符、换行符 | 从网页/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](reference/cn-data-formats.md)。
42 个 WPS Office 办公自动化 Claude Code Skills 集合 一句话指令,让 Claude 帮你自动生成 Word / Excel / PPT / PDF 文档。
Repo: Bwkyd/wps-skills
考勤打卡统计。把考勤机导出的打卡数据丢进来,自动统计每个人的 迟到、早退、缺勤、加班时长,生成月度考勤汇总表,异常考勤自动标红。 用于帮助HR处理考勤数据。当用户提到考勤、打卡、迟到、加班统计时触发。 Attendance tracker - generates summary reports from…
文档批量格式转换。把一个文件夹里的Word全转文本、Excel全导出CSV、 Markdown转Word,支持docx/txt/xlsx/csv/md等格式批量互转,一次搞定。 用于帮助用户批量转换文档格式。当用户提到批量转换、格式转换、导出时触发。 Batch converts documents between…
预算表一键生成。部门年度预算、项目预算、活动经费预算,选个模板填数字就行, 小计合计公式自动写好,还有预算vs实际对比和执行率自动计算。 用于帮助财务和行政制作预算表。当用户提到预算、费用表、经费时触发。 Budget spreadsheet generator with formulas and variance…
证书奖状批量生成。给一份名单,批量生成荣誉证书、结业证书、聘书、感谢信, 每人一份独立文件,年终评优、培训结业、表彰活动必备工具。 用于帮助用户批量生成证书。当用户提到证书、奖状、聘书时触发。 Batch certificate/award generator from a list of recipients.
数据图表一键生成。不知道数据该用什么图表?告诉我你的数据和目的, 自动推荐最佳图表类型并生成,柱状图折线图饼图散点图都支持,还帮你调配色。 用于帮助用户制作数据可视化图表。当用户提到图表、柱状图、折线图、饼图时触发。 Chart generator - recommends best chart type and…
日历排班值班表。生成带法定节假日和调休标注的月度/年度日历表, 还能做三班倒/两班倒排班表和节假日值班安排,颜色区分不同班次一目了然。 用于帮助用户生成日历和排班表。当用户提到日历、排班、值班、节假日时触发。 Chinese calendar with holidays, shift scheduling, and…