mcpField
M
minimax-xlsx

minimax-xlsx

github.com/minimax-ai文档处理13.7k3.8k 次安装28 周前更新
代码仓库

关于 minimax-xlsx

minimax-xlsx 是用于读取、创建、编辑、修复和验证 XLSX 文件的技能,面向电子表格处理任务。它以直接操作工作簿 XML 的流程处理创建和编辑,并强调保留原有工作簿内容及公式验证。

主要功能

  1. 01读取并分析工作簿数据
  2. 02基于 XML 模板创建 XLSX
  3. 03直接编辑现有工作簿 XML
  4. 04修复损坏公式并验证公式
  5. 05插入行或列并处理公式

适用场景

  1. 01汇总和分析现有表格数据
  2. 02按模板创建带公式的电子表格
  3. 03修改现有单元格或新增行列
  4. 04检查并修复工作簿中的公式

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/minimax-ai/skills --skill minimax-xlsx

安装后在 Claude Code 中输入/minimax-xlsx确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
create.md
edit.md
fix.md
format.md
ooxml-cheatsheet.md
read-analyze.md
validate.md
scripts/
formula_check.py
libreoffice_recalc.py
shared_strings_builder.py
style_audit.py
xlsx_add_column.py
xlsx_insert_row.py
xlsx_pack.py
xlsx_reader.py
xlsx_shift_rows.py
xlsx_unpack.py
templates/minimal_xlsx/
[Content_Types].xml
templates/minimal_xlsx/_rels/
.rels
templates/minimal_xlsx/xl/
sharedStrings.xml
styles.xml
workbook.xml
templates/minimal_xlsx/xl/_rels/
workbook.xml.rels
templates/minimal_xlsx/xl/worksheets/
sheet1.xml

详细介绍

MiniMax XLSX 技能

直接处理请求。不要启动子 Agent。始终写入用户要求的输出文件。

任务路由

任务方法指南
READ — 分析现有数据xlsx_reader.py + pandasreferences/read-analyze.md
CREATE — 从头创建新的 xlsxXML 模板references/create.md + references/format.md
EDIT — 修改现有 xlsxXML 解包→编辑→打包references/edit.md(如需设置样式,还需参考 format.md)
FIX — 修复现有 xlsx 中损坏的公式XML 解包→修复 <f> 节点→打包references/fix.md
VALIDATE — 检查公式formula_check.pyreferences/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 完整性规则:

  1. 绝不要为编辑任务创建新的 Workbook()。始终加载原始文件。
  2. 输出文件必须包含与输入文件相同的工作表(名称相同、数据相同)。
  3. 只修改任务指定的单元格——其他内容必须保持不变。
  4. 保存 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

关键规则

  1. 公式优先:每个计算单元格都必须使用 Excel 公式,而非硬编码数字
  2. CREATE → XML 模板:复制最简模板,直接编辑 XML,然后使用 xlsx_pack.py 打包
  3. EDIT → XML:绝不进行 openpyxl 往返读写。使用解包/编辑/打包脚本
  4. 始终生成输出文件 — 这是首要任务
  5. 交付前验证: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

评论

支持 Markdown