⚡

Excel中文表格处理Skill xlsx-cn

该技能用于批量创建、清洗、合并与美化 Excel(.xlsx)中文业务表格,面向工资表、成绩单、进销存、台账等报表场景;可诊断表头与合并单元格,按中文表头模糊对齐合并多表,清洗文本型数字、全角字符、混乱日期,保护身份证号/工号等标识列前导零,并套用金额千分位、负数标红、冻结窗格与打印排版。关键词:Excel,xlsx,表格,报表,工资表,成绩单,进销存,台账,数据清洗,多表合并,批量处理,格式化,openpyxl,中文表头,前导零,办公自动化,Python Excel,Excel报表。

数据分析 0 次安装 26 次浏览 更新于 10/10/2026
名称 xlsx-cn 名称: Excel中文表格处理
描述 “批量创建、清洗、合并与美化 Excel 工作簿(.xlsx)的中文业务表格技能:生成工资表、成绩单、进销存、台账等报表,按中文表头模糊对齐合并多个表,清洗文本型数字、全角字符、混乱日期与合并单元格,保护身份证号/工号等标识列的前导零,并套用千分位、负数标红、冻结窗格与打印排版。触发词:Excel、xlsx、表格、报表、工资表、成绩单、数据清洗、多表合并、批量处理、格式化、openpyxl。”
版本 v1.0.0
开源协议 MIT allowed-tools: Bash(python *) metadata: emoji: “📊” openclaw: requires: bins: [“python”] install: - id: pip-openpyxl kind: pip package: openpyxl label: 安装 openpyxl

以下是关于 xlsx-cn 技能的说明。

描述

本技能协助智能体批量创建、清洗、合并与美化 Excel 工作簿(.xlsx),面向工资表、成绩单、进销存、台账等中文业务表格场景。它通过本技能目录下的 scripts/ 脚本,以确定性方式完成诊断、清洗、合并与排版四类操作,并以内置的 references/chinese-spreadsheet-conventions.md 作为中文表格规范的判断依据。使用前请先阅读《注意事项》,其中前两条违反会造成不可逆的数据事故。关键词:Excel、xlsx、表格、报表、工资表、成绩单、数据清洗、多表合并、批量处理、格式化、openpyxl。

快速开始

# 0. 先诊断(必做):表头在第几行、合并区域、逐列问题清单
python scripts/inspect_workbook.py 输入.xlsx

# A. 清洗:类型归一、合并单元格填充、标识列保护、去重
python scripts/clean_table.py 输入.xlsx -o 清洗后.xlsx

# B. 合并:按中文表头模糊对齐后纵向合并多个表
python scripts/merge_tables.py -o 汇总.xlsx 一月.xlsx 二月.xlsx --add-source

# C. 美化:套用中文报表格式并输出
python scripts/format_report.py 汇总.xlsx -o 报表.xlsx --title "2026年10月工资表" --money-cols 应发工资,实发工资 --print

工作流程

  1. 诊断:运行 scripts/inspect_workbook.py,获取表头所在行号、合并单元格清单,以及每一列的类型问题(文本型数字、首尾空格、全角字符、文本型日期、标识列被存成数字、完全重复行)。先看清问题清单再决定后续走哪条流程,不要直接改数据。
  2. 清洗:运行 scripts/clean_table.py,按列推断类型后统一口径:
    • 首尾空格、全角 ASCII → 半角
    • 文本型数字("1,234.00"、"¥500")→ 数值
    • 整列百分比("12.5%")→ 数值 0.125 + 百分比格式
    • 中文日期(2026年10月10日、2026/10/10)→ 日期类型;8 位紧凑写法 20261010 需显式加 --compact-dates
    • 合并单元格拆开并向下填充(横向合并的报表标题只拆不填,避免把标题复制进每一列)
    • 标识列强制文本,保住前导零
    • 完全重复行去重,并报告删除了几行
  3. 合并:运行 scripts/merge_tables.py,按归一化后的列名对齐(忽略空格、全角/半角、(元)等后缀差异),列顺序不同也能对齐;列名只在一部分文件中出现时会明确告警,缺失处以空白填充。
  4. 美化输出:运行 scripts/format_report.py,套用中文报表格式——表头样式、冻结表头行、自动筛选、按中文显示宽度计算列宽、金额千分位与负数标红、标识列文本格式、打印排版。
  5. 自检:按下方《交付前自检》逐项核对,并重新打开输出文件确认行列数没有少。

脚本说明

脚本 作用 关键参数
scripts/inspect_workbook.py 诊断工作簿并输出问题清单与下一步建议 --json
scripts/clean_table.py 按列清洗、合并单元格填充、去重 --sheet、--no-dedupe、--no-fill-merged、--compact-dates
scripts/merge_tables.py 多表按中文表头模糊对齐合并 --add-source、--all-sheets、--header-row
scripts/format_report.py 套用中文报表格式 --title、--money-cols、--int-cols、--pct-cols、--print、--grid

代码模板

from openpyxl import load_workbook

# 读取:保留公式;大文件用 read_only=True 流式读
workbook = load_workbook("输入.xlsx", data_only=False)
sheet = workbook.active

# 写入:定点写回,不要用 DataFrame 覆盖整个工作簿
sheet["B2"].number_format = "#,##0.00;[Red]-#,##0.00"   # 金额
sheet["A2"].number_format = "@"                          # 标识列:文本,保住前导零
sheet["A2"].value = str(sheet["A2"].value)

workbook.save("输出.xlsx")   # 保存为新文件,不覆盖原始输入

样式、条件格式、打印设置、大文件流式写入的完整片段见 references/openpyxl-cookbook.md。

注意事项

  1. 绝不覆盖原文件。 每个脚本都用 -o 指定新文件,除非用户明确要求原地修改。
  2. 标识列必须保持文本。 身份证号、手机号、银行卡号、工号、编号、订单号、邮编一旦被 Excel 当数字处理,会丢前导零、变科学计数法(1.10101E+17),这是不可逆的数据事故。
  3. 不要用 DataFrame 覆盖工作簿,会丢公式、图表和格式。分析用 pandas,写回用 openpyxl 定点写入。
  4. openpyxl 不计算公式。 写入公式后缓存值仍为空或陈旧;需要算好的值必须用 LibreOffice 重算后再交付。
  5. 日期写成日期类型 + yyyy-mm-dd,不要把 2026.10.10、20261010 这类值原样当成数值留在表里。
  6. 8 位紧凑日期默认不转换,因为它与普通 8 位编号无法区分,需显式加 --compact-dates。
  7. 金额列必须仍是数值,否则 SUM 结果为 0——这是最常见的"表看着没问题但合计是 0"。

交付前自检

  • [ ] 重新打开输出文件核对行列数,确认没有少表、少行
  • [ ] 标识列没被转成科学计数法,前导零还在
  • [ ] 金额列仍是数值(不是文本),SUM 能算
  • [ ] 日期列是日期类型,不是字符串
  • [ ] 合并单元格已拆开填充的列,数据没有错位
  • [ ] 输出路径与文件名符合用户要求

知识来源

  • references/chinese-spreadsheet-conventions.md —— 中文表格的坑与行业约定:标识列事故、金额与百分比口径、日期与序列号、合并单元格、不可见字符、工资表/进销存/学籍表/财务报表惯例
  • references/openpyxl-cookbook.md —— openpyxl 常用片段:数字格式速查、样式、列宽、冻结筛选、条件格式、打印排版、大文件流式读写、公式与重算