前言¶
做数据分析或报表的同事,大概都经历过这样的场景:手头有一份 .xlsx,需要加列、改公式、清洗脏数据、再导出成规范格式。交给通用 AI 助手,它往往只能「描述怎么做」,或者写一段 Python 脚本让你自己跑——公式写死成数值、格式乱套、合并单元格报错,改完还得人工核对。
Agent Skill 的出现,把这类领域知识打包成可复用的指令包。今天要介绍的是 Anthropic 官方仓库里的 xlsx Skill:它正是 Claude 文档能力背后处理电子表格的那套实现,也是 Agent 处理结构化表格数据时值得参考的范例。
这是什么¶
xlsx 是一个面向电子表格任务的 Agent Skill,维护方是 Anthropic,源码位于 anthropics/skills 仓库的 skills/xlsx 目录。
它的定位很直接:只要任务的主要输入或输出是表格文件,就应该启用它。 覆盖 .xlsx、.xlsm、.xltx、.csv、.tsv 等格式,支持读取、编辑、新建、格式转换,以及带公式的财务模型建模。
需要说明的是:该 Skill 采用 source-available 许可(非 Apache 2.0 开源),与 docx、pdf、pptx 同属 Anthropic 文档技能系列,但官方将其公开供开发者学习复杂 Skill 的写法。
核心功能与亮点¶
1. 按任务选型:openpyxl、pandas、markitdown¶
官方 SKILL.md 把常见操作分成三条路径:
| 任务 | 推荐工具 |
|---|---|
| 创建/编辑,含公式与格式 | openpyxl |
| 大批量数据读写 | pandas(read_excel / to_excel) |
| 快速预览工作表内容 | markitdown file.xlsx |
openpyxl、pandas、markitdown 在 Skill 运行环境中已预装,Agent 应直接 import,无需先 pip install;只有导入失败时才补装。
2. 公式优先,禁止「写死结果」¶
这是 xlsx Skill 与普通脚本最大的区别。官方要求:
- 汇总行写
sheet['B10'] = '=SUM(B2:B9)',而不是把 Python 算出的数字填进去; - 交付前必须跑重算脚本,确保零公式错误;
- 用户指定的表名、列名、公式字面量必须严格遵守,不能「优化」成别的算法。
3. 内置公式重算:recalc.py¶
openpyxl 写入公式时不会缓存计算结果,不经过重算,pandas 和 load_workbook(data_only=True) 读到的都是 None。Skill 附带 scripts/recalc.py,调用 LibreOffice 就地重算:
python scripts/recalc.py output.xlsx [timeout_seconds]
脚本会输出 JSON,包含 status(success 或 errors_found)、total_formulas、total_errors 及错误单元格摘要。只要文件里还有公式,这一步是强制流程。
4. 财务模型规范¶
若用户未另行指定,Skill 内置一套投行风格的表格约定:蓝色输入、黑色公式、绿色跨表引用、红色跨文件引用、黄色高亮关键假设;货币格式、百分比存小数、年份用文本等细节都有明文规定。这对做估值表、预算模型的开发者很实用。
5. 公式兼容性清单¶
Skill 明确列出了 LibreOffice 重算环境的限制:优先使用 Excel 2007 时代的函数(SUMIFS、INDEX、MATCH 等);部分 2007 后函数需加 _xlfn. 前缀;禁止使用 XLOOKUP、FILTER、SORT 等在重算端无法正确展开的函数。这些坑如果没人提醒,Agent 很容易写出「看起来对、打开全是 #NAME?」的文件。
安装与启用¶
xlsx 基于通用 SKILL.md 格式,可在 Cursor、Claude Code、Claude.ai 等支持 Agent Skills 标准的工具中使用。各平台启用方式如下。
Claude Code¶
在 Claude Code 中注册官方插件市场并安装文档技能集:
/plugin marketplace add anthropics/skills
/plugin install document-skills@anthropic-agent-skills
安装后,直接描述任务即可,例如:「用 xlsx skill 给这份报表加一列同比增长率」。
Claude.ai¶
Anthropic 官方说明:仓库中的示例 Skill 已对付费计划用户开放;也可按 Using skills in Claude 上传自定义 Skill。
Cursor¶
将 skills/xlsx 整个目录复制到项目的 .cursor/skills/xlsx/(或全局目录 ~/.cursor/skills/xlsx/),确保内含 SKILL.md 及 scripts/ 子目录。Cursor 启动时会自动发现 Skill;也可在 Agent 对话中输入 /xlsx 手动调用。
Cursor 还支持从 GitHub 导入 Remote Rule:在 Customize → Rules → Add Rule → Remote Rule (Github) 填入仓库地址。
Claude API¶
通过 Skills API 上传或使用预置 Skill,适合集成到自动化流水线。
典型用法示例¶
快速预览表格¶
markitdown sales_report.xlsx
输出按 ## SheetName 分段,适合先摸清数据结构;但不含单元格坐标,不能据此规划精确编辑。
读取含公式的模型(两次加载)¶
openpyxl 无法在一次加载中同时拿到公式字符串和缓存值,官方推荐:
from openpyxl import load_workbook
# 第一次:读公式
wb_formula = load_workbook("model.xlsx")
# 第二次:读缓存值(编辑前务必先 recalc)
wb_values = load_workbook("model.xlsx", data_only=True)
注意:data_only=True 后若保存,会把公式永久替换成字面量,这是常见误操作。
写入公式并重算¶
from openpyxl import Workbook
wb = Workbook()
sheet = wb.active
sheet['A1'] = 'Item'
sheet['B1'] = 'Amount'
sheet['B2'] = 100
sheet['B3'] = 200
sheet['B4'] = '=SUM(B2:B3)'
wb.save('output.xlsx')
保存后必须执行:
python scripts/recalc.py output.xlsx
大批量数据处理¶
import pandas as pd
df = pd.read_excel('raw_data.xlsx', sheet_name='Sheet1')
df['total'] = df['qty'] * df['price']
df.to_excel('cleaned.xlsx', index=False)
若输出文件含公式,仍要走 recalc.py 流程。
适用场景与注意事项¶
适合谁用:
- 需要 Agent 直接产出
.xlsx/.csv文件的开发者或分析师; - 做财务模型、运营报表、数据清洗流水线,且希望公式可审计、可复算的场景;
- 想学习「如何把领域规范写进 Skill」的 Skill 作者——xlsx 的 SKILL.md 篇幅长、约束细,是高质量参考。
不适合的场景(官方明确排除):
- 主要交付物是 Word、HTML 报告、独立 Python 脚本或数据库管道;
- 需要对接 Google Sheets API 的在线协作场景。
使用时要留意的坑:
- 合并单元格只能写左上角锚点,其余为只读
MergedCell; .xlsm保存时需keep_vba=True,否则宏会丢失;- 跨表引用若表名含空格,公式里必须加引号:
='Assumptions Inputs'!$B$5; - 编辑已有文件时,应匹配原文件的输入单元格样式(颜色/填充),不要动已有公式;
- 含外部文件链接的工作簿,openpyxl 重存后链接可能断裂,
recalc.py会拒绝运行。
小结¶
xlsx Skill 的价值,不在于「让 AI 会读 CSV」,而在于把电子表格交付的完整工程规范——公式写法、重算验证、格式约定、兼容性边界——写进了 Agent 可执行的指令里。对经常和 Excel 打交道的开发者,把它装进 Cursor 或 Claude Code,意味着描述需求后拿到的是一份能直接交给业务方的文件,而不是需要二次修修补补的半成品。
官方地址:https://github.com/anthropics/skills/tree/main/skills/xlsx