讓 AI 真正會寫 Excel:Anthropic 官方 xlsx Skill 詳解

前言

做數據分析或報表的同事,大概都經歷過這樣的場景:手頭有一份 .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
大批量數據讀寫 pandasread_excel / to_excel
快速預覽工作表內容 markitdown file.xlsx

openpyxlpandasmarkitdown 在 Skill 運行環境中已預裝,Agent 應直接 import,無需先 pip install;只有導入失敗時才補裝。

2. 公式優先,禁止「寫死結果」

這是 xlsx Skill 與普通腳本最大的區別。官方要求:

  • 彙總行寫 sheet['B10'] = '=SUM(B2:B9)',而不是把 Python 算出的數字填進去;
  • 交付前必須跑重算腳本,確保零公式錯誤;
  • 用戶指定的表名、列名、公式字面量必須嚴格遵守,不能「優化」成別的算法。

3. 內置公式重算:recalc.py

openpyxl 寫入公式時不會緩存計算結果,不經過重算,pandasload_workbook(data_only=True) 讀到的都是 None。Skill 附帶 scripts/recalc.py,調用 LibreOffice 就地重算:

python scripts/recalc.py output.xlsx [timeout_seconds]

腳本會輸出 JSON,包含 statussuccesserrors_found)、total_formulastotal_errors 及錯誤單元格摘要。只要文件裏還有公式,這一步是強制流程。

4. 財務模型規範

若用戶未另行指定,Skill 內置一套投行風格的表格約定:藍色輸入、黑色公式、綠色跨表引用、紅色跨文件引用、黃色高亮關鍵假設;貨幣格式、百分比存小數、年份用文本等細節都有明文規定。這對做估值表、預算模型的開發者很實用。

5. 公式兼容性清單

Skill 明確列出了 LibreOffice 重算環境的限制:優先使用 Excel 2007 時代的函數(SUMIFSINDEXMATCH 等);部分 2007 後函數需加 _xlfn. 前綴;禁止使用 XLOOKUPFILTERSORT 等在重算端無法正確展開的函數。這些坑如果沒人提醒,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.mdscripts/ 子目錄。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 的在線協作場景。

使用時要留意的坑:

  1. 合併單元格只能寫左上角錨點,其餘爲只讀 MergedCell
  2. .xlsm 保存時需 keep_vba=True,否則宏會丟失;
  3. 跨表引用若表名含空格,公式裏必須加引號:='Assumptions Inputs'!$B$5
  4. 編輯已有文件時,應匹配原文件的輸入單元格樣式(顏色/填充),不要動已有公式;
  5. 含外部文件鏈接的工作簿,openpyxl 重存後鏈接可能斷裂,recalc.py 會拒絕運行。

小結

xlsx Skill 的價值,不在於「讓 AI 會讀 CSV」,而在於把電子表格交付的完整工程規範——公式寫法、重算驗證、格式約定、兼容性邊界——寫進了 Agent 可執行的指令裏。對經常和 Excel 打交道的開發者,把它裝進 Cursor 或 Claude Code,意味着描述需求後拿到的是一份能直接交給業務方的文件,而不是需要二次修修補補的半成品。

官方地址:https://github.com/anthropics/skills/tree/main/skills/xlsx

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜