关于 minimax-xlsx
minimax-xlsx 是用于读取、创建、编辑、修复和验证 XLSX 文件的技能,面向电子表格处理任务。它以直接操作工作簿 XML 的流程处理创建和编辑,并强调保留原有工作簿内容及公式验证。
主要功能
- 01读取并分析工作簿数据
- 02基于 XML 模板创建 XLSX
- 03直接编辑现有工作簿 XML
- 04修复损坏公式并验证公式
- 05插入行或列并处理公式
适用场景
- 01汇总和分析现有表格数据
- 02按模板创建带公式的电子表格
- 03修改现有单元格或新增行列
- 04检查并修复工作簿中的公式
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ minimax-ai/ skills --skill minimax-xlsx安装后在 Claude Code 中输入/minimax-xlsx确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/create.mdedit.mdfix.mdformat.mdooxml-cheatsheet.mdread-analyze.mdvalidate.mdscripts/formula_check.pylibreoffice_recalc.pyshared_strings_builder.pystyle_audit.pyxlsx_add_column.pyxlsx_insert_row.pyxlsx_pack.pyxlsx_reader.pyxlsx_shift_rows.pyxlsx_unpack.pytemplates/minimal_xlsx/[Content_Types].xmltemplates/minimal_xlsx/_rels/.relstemplates/minimal_xlsx/xl/sharedStrings.xmlstyles.xmlworkbook.xmltemplates/minimal_xlsx/xl/_rels/workbook.xml.relstemplates/minimal_xlsx/xl/worksheets/sheet1.xml详细介绍
MiniMax XLSX 技能
直接处理请求。不要启动子 Agent。始终写入用户要求的输出文件。
任务路由
| 任务 | 方法 | 指南 |
|---|---|---|
| READ — 分析现有数据 | xlsx_reader.py + pandas | references/read-analyze.md |
| CREATE — 从头创建新的 xlsx | XML 模板 | references/create.md + references/format.md |
| EDIT — 修改现有 xlsx | XML 解包→编辑→打包 | references/edit.md(如需设置样式,还需参考 format.md) |
| FIX — 修复现有 xlsx 中损坏的公式 | XML 解包→修复 <f> 节点→打包 | references/fix.md |
| VALIDATE — 检查公式 | formula_check.py | references/validate.md |
READ — 分析数据(先阅读 references/read-analyze.md)
先使用 xlsx_reader.py 发现工作簿结构,然后使用 pandas 进行自定义分析。绝不修改源文件。
格式规则:当用户指定小数位数(例如“保留 2 位小数”)时,对所有数值应用该格式——对每个数字使用 f'{v:.2f}'。要求输出 12875.00 时,绝不要输出 12875。
聚合规则:始终直接从 DataFrame 列计算总和、均值和计数——例如 df['Revenue'].sum()。绝不要在聚合前重新推导列值。
CREATE — XML 模板(阅读 references/create.md + references/format.md)
复制 templates/minimal_xlsx/ → 直接编辑 XML → 使用 xlsx_pack.py 打包。所有派生值都必须是 Excel 公式(<f>SUM(B2:B9)</f>),绝不能是硬编码数字。根据 format.md 应用字体颜色。
EDIT — 直接编辑 XML(先阅读 references/edit.md)
关键 — EDIT 完整性规则:
- 绝不要为编辑任务创建新的
Workbook()。始终加载原始文件。 - 输出文件必须包含与输入文件相同的工作表(名称相同、数据相同)。
- 只修改任务指定的单元格——其他内容必须保持不变。
- 保存
output.xlsx后,务必验证文件:使用xlsx_reader.py或pandas打开文件,确认原始工作表名称和部分原始数据仍然存在。如果验证失败,说明写入了错误的文件——交付前先修正。
绝不要使用 openpyxl 往返处理现有文件(这会破坏 VBA、数据透视表和迷你图)。应改为:解包 → 使用辅助脚本 → 重新打包。
“填充单元格”/“向现有单元格添加公式”= EDIT 任务。 如果输入文件已存在,且用户要求填充、更新或向特定单元格添加公式,必须使用 XML 编辑流程。绝不要创建新的 Workbook()。示例——在 B3 中填入跨工作表的 SUM 公式:
python3 SKILL_DIR/scripts/xlsx_unpack.py input.xlsx /tmp/xlsx_work/
# Find the target sheet's XML via xl/workbook.xml → xl/_rels/workbook.xml.rels
# Then use the Edit tool to add <f> inside the target <c> element:
# <c r="B3"><f>SUM('Sales Data'!D2:D13)</f><v></v></c>
python3 SKILL_DIR/scripts/xlsx_pack.py /tmp/xlsx_work/ output.xlsx
添加列(公式、数字格式和样式会从相邻列自动复制):
python3 SKILL_DIR/scripts/xlsx_unpack.py input.xlsx /tmp/xlsx_work/
python3 SKILL_DIR/scripts/xlsx_add_column.py /tmp/xlsx_work/ --col G \
--sheet "Sheet1" --header "% of Total" \
--formula '=F{row}/$F$10' --formula-rows 2:9 \
--total-row 10 --total-formula '=SUM(G2:G9)' --numfmt '0.0%' \
--border-row 10 --border-style medium
python3 SKILL_DIR/scripts/xlsx_pack.py /tmp/xlsx_work/ output.xlsx
--border-row 标志会为该行中的所有单元格添加上边框(不只是新列)。当任务要求总计行使用会计样式边框时,请使用该标志。
插入行(移动现有行、更新 SUM 公式并修复循环引用):
python3 SKILL_DIR/scripts/xlsx_unpack.py input.xlsx /tmp/xlsx_work/
# IMPORTANT: Find the correct --at row by searching for the label text
# in the worksheet XML, NOT by using the row number from the prompt.
# The prompt may say "row 5 (Office Rent)" but Office Rent might actually
# be at row 4. Always locate the row by its text label first.
python3 SKILL_DIR/scripts/xlsx_insert_row.py /tmp/xlsx_work/ --at 5 \
--sheet "Budget FY2025" --text A=Utilities \
--values B=3000 C=3000 D=3500 E=3500 \
--formula 'F=SUM(B{row}:E{row})' --copy-style-from 4
python3 SKILL_DIR/scripts/xlsx_pack.py /tmp/xlsx_work/ output.xlsx
行查找规则:当任务要求“在第 N 行(标签)之后”插入时,始终在工作表 XML 中搜索“标签”来查找该行(使用 grep -n "Label" /tmp/xlsx_work/xl/worksheets/sheet*.xml,或检查 sharedStrings.xml)。使用实际行号 + 1 作为 --at 参数。不要单独调用 xlsx_shift_rows.py——xlsx_insert_row.py 会在内部调用它。
应用整行边框(例如,为 TOTAL 行添加会计样式横线):
运行辅助脚本后,为目标行中的所有单元格应用边框,而不只是新添加的单元格。在 xl/styles.xml 中追加一个具有所需样式的新 <border>,然后在 <cellXfs> 中追加一个新的 <xf>,克隆每个单元格现有的 <xf>,但将其 borderId 设置为新值。通过 s 属性将新样式索引应用到该行的每个 <c>:
<border>
<left/><right/><top style="medium"/><bottom/><diagonal/>
</border>
关键规则:当任务要求“为第 N 行添加边框”时,应遍历从 A 列到最后一列的所有单元格,而不只是新添加的单元格。
手动编辑 XML(用于辅助脚本无法处理的情况):
python3 SKILL_DIR/scripts/xlsx_unpack.py input.xlsx /tmp/xlsx_work/
# ... edit XML with the Edit tool ...
python3 SKILL_DIR/scripts/xlsx_pack.py /tmp/xlsx_work/ output.xlsx
FIX — 修复损坏的公式(请先阅读 references/fix.md)
这是一个 EDIT 任务。解包 → 修复损坏的 <f> 节点 → 打包。保留所有原始工作表和数据。
VALIDATE — 检查公式(请先阅读 references/validate.md)
运行 formula_check.py 进行静态验证。如可用,请使用 libreoffice_recalc.py 重新计算。
财务颜色标准
| 单元格角色 | 字体颜色 | 十六进制代码 |
|---|---|---|
| 硬编码输入 / 假设 | 蓝色 | 0000FF |
| 公式 / 计算结果 | 黑色 | 000000 |
| 跨工作表引用公式 | 绿色 | 00B050 |
关键规则
- 公式优先:每个计算单元格都必须使用 Excel 公式,而非硬编码数字
- CREATE → XML 模板:复制最简模板,直接编辑 XML,然后使用
xlsx_pack.py打包 - EDIT → XML:绝不进行 openpyxl 往返读写。使用解包/编辑/打包脚本
- 始终生成输出文件 — 这是首要任务
- 交付前验证:
formula_check.py退出代码为 0 = 安全
实用脚本
python3 SKILL_DIR/scripts/xlsx_reader.py input.xlsx # structure discovery
python3 SKILL_DIR/scripts/formula_check.py file.xlsx --json # formula validation
python3 SKILL_DIR/scripts/formula_check.py file.xlsx --report # standardized report
python3 SKILL_DIR/scripts/xlsx_unpack.py in.xlsx /tmp/work/ # unpack for XML editing
python3 SKILL_DIR/scripts/xlsx_pack.py /tmp/work/ out.xlsx # repack after editing
python3 SKILL_DIR/scripts/xlsx_shift_rows.py /tmp/work/ insert 5 1 # shift rows for insertion
python3 SKILL_DIR/scripts/xlsx_add_column.py /tmp/work/ --col G ... # add column with formulas
python3 SKILL_DIR/scripts/xlsx_insert_row.py /tmp/work/ --at 6 ... # insert row with data