Excel大师

SKILL效率
效率 未标注权限 许可证不明确
安装这个技能

解决大文件内存爆炸、格式丢失、科学计数法、公式不计算四大痛点,按文件规模分层处理.。Excel大师是面向批量表格处理的能力包。它不只罗列脚本,更解决四个高频痛点:

一句话选型结论

按资料字段整理

Excel大师是效率类的 Agent Skill,安装方式未标注,权限级别未标注,许可证不明确,有可直接复制的安装命令。技能本质是给模型读的说明书,效果取决于模型与客户端;装完先用一个小任务验证,再放进正式流程。

分类效率 安装方式未标注 权限级别未标注权限 许可证许可证不明确
累计安装 未标注 本周 未标注
GitHub 星标 未标注 仓库 未标注
下载量 未标注 技能市场下载数
权限级别 未标注权限 安装前请确认风险范围
许可证 许可证不明确 未说明

安装

未标注
在支持 Skills 的客户端里执行,装完问一句「你有哪些技能」验证
skillhub install zcwl/excel-maestro
  1. 1
    确认客户端支持

    确认你的客户端支持 Skills(Claude、Codex、Cursor 等),并升级到较新的版本。

  2. 2
    拿到技能文件

    执行上面的命令安装;也可以把仓库里的 SKILL.md 手动放进客户端的 skills 目录。

  3. 3
    刷新技能列表

    重新打开客户端,或刷新技能列表,让新放进来的技能被加载。

  4. 4
    验证是否生效

    问一句「你有哪些技能」,确认列表里出现它,再拿一个小任务试跑。

技能档案

效率
字段来自技能仓库与公开索引,中文说明由本站标注
作者 / 维护方zcwl仓库 未标注 · 版本 未标注
宿主客户端未标注技能可被这些客户端加载
安装方式未标注安装包 enterprise
权限级别未标注权限安装前请确认风险范围
许可证未说明许可证不明确,商用前请自行确认条款
仓库可用性available技能仓库当前是否可访问
最近核验未标注上游最后核验时间 · 数据更新 1791711097
正文体量15.4 KBSKILL.md 原文大小,越大说明说明书写得越细

典型使用场景

3 类
按分类整理的常见用法,具体以 SKILL.md 为准
整理待办与日程

把零散任务收进清单,排出优先级。

批量处理重复任务

把固定动作做成模板,重复执行。

把流程写成清单

把口头流程整理成可复用的步骤。

选择建议

装之前先看这几条
按条目字段给出的判断,不替你决定用不用

值得选的地方

  • 有可直接复制的安装命令,不用自己翻文档找入口。

先想清楚的地方

  • 没有标注权限级别,实际能做什么要装好后确认。
  • 许可证不明确,商用或二次分发前先到仓库确认条款。
  • 没有做站内核验,内容以作者仓库为准。
  • 技能只是说明书,实际效果取决于模型与客户端,装完先用小任务试一遍。

更适合

  • 需要在效率场景里给模型补一套做法的人。
  • 愿意先读一遍 SKILL.md、确认它会让模型做什么的人。

不太适合

  • 对许可证要求很严、必须明确可商用的人。
  • 只想装完就自动变强、不打算看说明书的人。

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
技能权限级别安装方式累计安装宿主客户端安装命令
Excel大师当前 未标注权限 未标注 未标注 未标注 有
Nano PDF 文档 联网访问 ClawHub 市场 424.9 万 OpenClaw 有
自动更新程序 浏览器控制 ClawHub 市场 296.4 万 OpenClaw 有
Gemini 助手 联网访问 ClawHub 市场 254.7 万 OpenClaw 有
word DOCX 文档 联网访问 ClawHub 市场 239.6 万 OpenClaw 有
Excel XLSX 前端 联网访问 ClawHub 市场 227.0 万 OpenClaw 有

SKILL.md 全文

15.4 KB
模型实际读到的说明书原文,来自技能仓库

Excel大师

处理Excel文件、表格数据、批量转换或报表生成时应用本skill。核心信条:先看文件多大,再选工具;先问要不要保格式,再动笔。

四大痛点与对策

痛点 典型表现 本skill对策
大文件内存爆炸 50万行xlsx一加载OOM 文件规模分层 + read_only/write_only流式
格式丢失 pandas读写后颜色/公式/图表全没了 格式保留矩阵 + 两条路径
科学计数法 身份证号变成1.23E+19 列格式强制文本 + 写入前预处理
公式不计算 data_only=True拿到None 区分"读公式"vs"读缓存值" + 重算方案

第一步:按文件规模选工具

文件规模 行数估计 推荐工具 关键参数
小文件 <1万行 pandas pd.read_excel(engine=&quot;openpyxl&quot;)
中文件 1万-50万行 openpyxl load_workbook(read_only=True)
大文件 >50万行 openpyxl流式 + 分块 read_only=True + write_only=True + 分页
超大文件 >100万行 列裁剪 + 分块 + 落地CSV 配合pandas chunksize

中大文件流式读取(避免OOM)

from openpyxl import load_workbook

# read_only=True 不把整个文件载入内存
wb = load_workbook(&quot;big.xlsx&quot;, read_only=True, data_only=True)
ws = wb[&quot;Sheet1&quot;]
for row in ws.iter_rows(values_only=True):
    # 逐行处理,内存恒定
    process(row)
wb.close()  # read_only 必须显式关闭

大文件流式写入

from openpyxl import Workbook

wb = Workbook(write_only=True)  # 流式写,无法修改已写行
ws = wb.create_sheet(&quot;结果&quot;)
ws.append([&quot;列A&quot;, &quot;列B&quot;, &quot;列C&quot;])
for row in data_stream:
    ws.append(row)
wb.save(&quot;output.xlsx&quot;)  # 不会OOM

第二步:格式保留矩阵

> 90%的"格式丢失"问题源于选错了工具。

操作需求 用pandas 用openpyxl 说明
纯数据读写 ✅ ✅ pandas更简洁
保留单元格颜色/字体 ❌ ✅ pandas会丢
保留公式 ❌ ✅ pandas只存值或公式字符串
保留图表/透视表 ❌ ⚠️部分 openpyxl能保留已有图表,不能新建复杂图表
保留合并单元格 ❌ ✅ pandas会展开
保留条件格式 ❌ ✅ pandas会丢
多表合并/分析 ✅ ⚠️慢 pandas DataFrame更适合
大文件流式 ⚠️chunksize ✅read_only openpyxl更稳

两条路径选择

路径A:纯数据处理(不关心格式)

import pandas as pd
df = pd.read_excel(&quot;input.xlsx&quot;, engine=&quot;openpyxl&quot;)
# ... 处理 ...
df.to_excel(&quot;output.xlsx&quot;, index=False, engine=&quot;openpyxl&quot;)

路径B:保留原格式改数据(只动目标单元格)

import openpyxl
wb = openpyxl.load_workbook(&quot;input.xlsx&quot;)  # 不加read_only
ws = wb[&quot;Sheet1&quot;]
ws[&quot;C2&quot;] = new_value  # 只改这一格,其余格式全保留
wb.save(&quot;output.xlsx&quot;)

第三步:四大陷阱与规避

陷阱1:data_only=True拿到None

# 错误:文件从未被Excel打开过,公式没有缓存值
wb = openpyxl.load_workbook(&quot;file.xlsx&quot;, data_only=True)
ws = wb.active
print(ws[&quot;A1&quot;].value)  # None,因为公式结果从未被Excel计算并保存

# 正确方案1:用Excel打开保存一次(让Excel写入缓存值)
# 正确方案2:用formulas库重算
# pip install formulas
import formulas
xl = formulas.ExcelModel().loads(&quot;file.xlsx&quot;).finish()
sol = xl.calculate()
# 正确方案3:只读公式字符串(不读值)
wb = openpyxl.load_workbook(&quot;file.xlsx&quot;, data_only=False)
print(ws[&quot;A1&quot;].value)  # &quot;=SUM(B1:B10)&quot; 公式字符串

陷阱2:长数字变科学计数法

# 错误:身份证号110101199001011234变成1.10E+17
df = pd.read_excel(&quot;input.xlsx&quot;)
df[&quot;身份证号&quot;]  # 已是float,精度丢失

# 正确方案1:读取时指定dtype
df = pd.read_excel(&quot;input.xlsx&quot;, dtype={&quot;身份证号&quot;: str})

# 正确方案2:openpyxl读
wb = openpyxl.load_workbook(&quot;input.xlsx&quot;)
ws = wb.active
for row in ws.iter_rows(values_only=True):
    id_card = str(row[0])  # 字符串保留

# 正确方案3:写入前强制文本格式
from openpyxl.styles import numbers
ws[&quot;A1&quot;].number_format = numbers.FORMAT_TEXT
ws[&quot;A1&quot;] = &quot;110101199001011234&quot;

陷阱3:CSV编码错乱

# 错误:中文乱码或报错
df = pd.read_csv(&quot;input.csv&quot;)  # 默认UTF-8,但Excel导出的CSV可能是GBK

# 正确方案1:尝试多种编码
for enc in [&quot;utf-8&quot;, &quot;gbk&quot;, &quot;gb18030&quot;, &quot;utf-8-sig&quot;]:
    try:
        df = pd.read_csv(&quot;input.csv&quot;, encoding=enc)
        break
    except UnicodeDecodeError:
        continue

# 正确方案2:写入CSV时加BOM(让Excel正确识别UTF-8)
df.to_csv(&quot;output.csv&quot;, index=False, encoding=&quot;utf-8-sig&quot;)

陷阱4:合并单元格读写

# 读取:合并单元格只有左上角有值,其余为None
ws = wb[&quot;Sheet1&quot;]
for row in ws.iter_rows():
    for cell in row:
        if cell.value is None and cell.coordinate in ws.merged_cells:
            # 处于合并区域内,取左上角值
            pass

# 写入:先解除合并再写
from openpyxl.utils import range_boundaries
for merged_range in list(ws.merged_cells.ranges):
    ws.unmerge_cells(str(merged_range))
ws[&quot;A1&quot;] = value

第四步:脚本速查表

你想做的事 调用脚本 典型参数
多Excel/多sheet合成一张表 merge_sheets.py --inputs 文件或目录 --output out.xlsx
sheet导出CSV excel_to_csv.py --input file.xlsx --output file.csv
CSV转Excel csv_to_excel.py --input a.csv --output a.xlsx
按条件筛选行 filter_excel.py --where &quot;列名=值&quot; 或 &quot;列名&gt;100&quot;、&quot;列名~北京&quot;
按行数/按列拆分 split_excel.py --by-rows 5000 或 --by-column 地区
按列去重 deduplicate_excel.py --keys 编号 --keep first
分组聚合 aggregate_excel.py --group-by 地区 --agg &quot;销售额:sum&quot;
校验必填列/重复键/空行 validate_excel.py --require-cols 列名 --key-cols 列名
选择/重命名列 select_columns.py --columns 列1,列2 --rename &quot;旧:新&quot;
两表按键合并(VLOOKUP) merge_tables.py --left a.xlsx --right b.xlsx --on 键列
主表对多表VLOOKUP vlookup_multi.py --main 主.xlsx --lookups &quot;表1.xlsx:键列&quot;
行列转置 transpose_excel.py --input in.xlsx --output out.xlsx
模板填充{{列名}} template_fill.py --template t.xlsx --data d.csv --output out.xlsx
重命名工作表 rename_sheets.py --rename &quot;Sheet1:新名&quot; 或 --prefix &quot;2024_&quot;
条件格式 format_conditional.py --column C --rule gt --value 100 --fill red
列设为文本格式 format_columns_as_text.py --columns 身份证号,订单号

本地运行

# 进入skill目录或把scripts/加入PATH
pip install -r scripts/requirements.txt
python scripts/merge_sheets.py --help

第五步:通用处理流程

  1. 确认输入:文件路径、sheet名或索引、是否有表头、编码(CSV时)
  2. 选工具:按文件规模分层表选pandas或openpyxl
  3. 读取:按需读整表/区域/流式
  4. 处理:转换、过滤、合并、计算
  5. 写出:指定输出路径与格式;需保格式则用openpyxl单格改写
  6. 校验:检查行数、关键列、重复值、业务规则

读取Excel

# 整表为list of dict(保表头)
import openpyxl
wb = openpyxl.load_workbook(&quot;input.xlsx&quot;, read_only=True, data_only=True)
ws = wb.active
rows = list(ws.iter_rows(values_only=True))
header = rows[0]
data = [dict(zip(header, row)) for row in rows[1:]]
wb.close()

# pandas(适合分析、过滤、合并)
import pandas as pd
df = pd.read_excel(&quot;input.xlsx&quot;, sheet_name=0, engine=&quot;openpyxl&quot;)

# 指定区域
df = pd.read_excel(&quot;input.xlsx&quot;, usecols=&quot;A:D&quot;, header=0, nrows=100)

写入Excel

# 新建并写入(openpyxl)
from openpyxl import Workbook
from openpyxl.styles import Font
wb = Workbook()
ws = wb.active
ws.title = &quot;结果&quot;
ws.append([&quot;列A&quot;, &quot;列B&quot;, &quot;列C&quot;])
for row in data_rows:
    ws.append(row)
ws[&quot;A1&quot;].font = Font(bold=True)
wb.save(&quot;output.xlsx&quot;)

# pandas多sheet写出
with pd.ExcelWriter(&quot;output.xlsx&quot;, engine=&quot;openpyxl&quot;) as writer:
    df1.to_excel(writer, sheet_name=&quot;汇总&quot;, index=False)
    df2.to_excel(writer, sheet_name=&quot;明细&quot;, index=False)

# 追加到已有文件
wb = openpyxl.load_workbook(&quot;existing.xlsx&quot;)
ws = wb[&quot;Sheet1&quot;]
for row in new_rows:
    ws.append(row)
wb.save(&quot;existing.xlsx&quot;)

第六步:批量处理目录

from pathlib import Path
import openpyxl, json

results = []
errors = []
for file in Path(&quot;目录&quot;).glob(&quot;*.xlsx&quot;):
    try:
        wb = openpyxl.load_workbook(file, read_only=True, data_only=True)
        ws = wb.active
        # 处理...
        results.append({&quot;file&quot;: file.name, &quot;rows&quot;: ws.max_row})
        wb.close()
    except Exception as e:
        errors.append({&quot;file&quot;: file.name, &quot;error&quot;: str(e)})
        continue  # 出错继续处理其余文件

# 汇总报错列表
if errors:
    with open(&quot;errors.json&quot;, &quot;w&quot;, encoding=&quot;utf-8&quot;) as f:
        json.dump(errors, f, ensure_ascii=False, indent=2)

批量输出命名规则建议:原名_out.xlsx 或统一汇总到一个文件。


第七步:性能优化技巧

场景 慢的原因 优化方案
逐单元格写入 每次write触发渲染 用ws.append(row)批量行写入
大文件读取OOM 整文件载入 read_only=True流式
大文件写出OOM 整工作簿在内存 write_only=True流式
只需部分列 读全部列 usecols=&quot;A:C&quot;列裁剪
百万行分析 全量载入 pd.read_excel(chunksize=10000)分块
多文件合并 串行读 并行读(concurrent.futures)
公式重算慢 全表重算 用formulas库按需算

校验与错误处理

  • 读取前用Path(file).exists()检查文件存在
  • 表为空或缺少预期列时给出明确提示(列名/行数)
  • 写入前若目标文件已存在,按用户要求覆盖或换名;大文件用write_only=True或分块
  • 捕获openpyxl.utils.exceptions.InvalidFileException、KeyError(工作表名)并返回可读错误

常见错误代码

错误 原因 解决
InvalidFileException 文件不是有效xlsx/xls 检查文件是否损坏、是否实为.csv改后缀
KeyError: &#x27;Sheet1&#x27; 工作表名不存在 用wb.sheetnames查看实际表名
PermissionError 文件被Excel占用 关闭Excel再处理
MemoryError 文件太大 切换read_only流式
UnicodeDecodeError CSV编码不对 尝试gbk/gb18030/utf-8-sig
ValueError: No column 列名写错或有多余空格 df.columns = df.columns.str.strip()

技术栈

  • 读写.xlsx:openpyxl(保留格式、公式、多工作表)
  • 数据分析/透视:pandas + openpyxl引擎
  • 旧格式.xls:xlrd(只读)
  • 公式重算:formulas库(按需)
pip install openpyxl pandas xlrd formulas

FAQ

Q:50万行Excel一读就OOM怎么办?
A:用load_workbook(read_only=True, data_only=True)流式读取,配合iter_rows(values_only=True)逐行处理,内存恒定。

Q:用pandas读写后Excel颜色和公式都没了?
A:pandas只处理数据不处理格式。需要保格式就用openpyxl加载原文件,只改目标单元格再save(见"路径B")。

Q:身份证号变成科学计数法怎么救?
A:读取时dtype={&quot;身份证号&quot;: str},或openpyxl读后str(cell.value)。写入前设number_format = FORMAT_TEXT。

Q:data_only=True读公式单元格是None?
A:文件从未被Excel打开保存过,没有缓存值。要么用Excel打开存一次,要么用formulas库重算,要么data_only=False读公式字符串。

Q:多个Excel文件需要合并到一个sheet?
A:用merge_sheets.py --inputs 目录 --output out.xlsx,或pandas的pd.concat([pd.read_excel(f) for f in files])。

Q:CSV用Excel打开中文乱码?
A:写入时encoding=&quot;utf-8-sig&quot;加BOM,Excel就能正确识别UTF-8。


故障排查

症状 可能原因 解决
打开文件报InvalidFile 文件损坏或后缀不符 用Excel打开验证,或另存为xlsx
sheet名找不到 有隐藏空格 wb.sheetnames查看,strip空格
写入后打不开 write_only模式未append任何行 确保至少append一行再save
数值精度丢失 用了float存大数 改用str或Decimal
条件格式不生效 规则写错或范围不对 先用Excel手动验证规则
公式显示为文本 单元格格式是文本 设number_format = &#x27;General&#x27;再写公式

依赖说明

运行环境

  • Agent平台:支持SKILL.md的任意AI Agent(Claude Code / Cursor / Codex / Gemini CLI等)
  • 操作系统:Windows / macOS / Linux
  • Python:3.8+(推荐3.10+)

第三方依赖

依赖项 类型 是否必需 获取方式
openpyxl Python库 必需 pip install openpyxl
pandas Python库 必需 pip install pandas
xlrd Python库 可选(读.xls) pip install xlrd
formulas Python库 可选(公式重算) pip install formulas
LLM API API 必需 由Agent内置LLM提供

API Key 配置

  • 本skill基于本地脚本,无需额外API Key
  • 涉及读取在线Excel(如OneDrive)时需对应平台OAuth Token

可用性分类

  • 分类:MD+EXEC(Markdown指令 + Python脚本执行)
  • 说明:通过自然语言指令驱动Agent调用scripts/下的Python脚本完成Excel处理

常见问题

5 问
答案由本站依据条目字段整理
Excel大师怎么安装?

在支持 Skills 的客户端里执行:skillhub install zcwl/excel-maestro。安装方式为未标注。装完刷新技能列表或重开客户端。

Excel大师支持哪些客户端?

资料没有标注宿主客户端,但只要客户端支持 Skills(Claude、Codex、Cursor 等),一般都能加载。

Excel大师权限高吗,安全吗?

权限级别为未标注权限。安装前先看它会读取或写入哪些内容。

Excel大师收费吗?

本站不代收费用,也没有标注具体价格。是否收费取决于技能本身和所用的模型或客户端,正式使用前按作者说明确认。

Excel大师用什么许可证?

许可证标注为 未说明(许可证不明确)。商用或二次分发前请到仓库确认条款原文。

热门专题

按场景挑技能
全部专题 →

技能内容以作者仓库为准;分类、权限级别与许可证状态的中文说明为中文整理,最近核验 未标注。