安装方式
命令行安装
在项目根目录执行以下命令,完成 Skill 安装。
npx bzskills add MiniMax-AI/skills --skill minimax-xlsx 打开、创建、读取、分析、编辑或验证Excel/电子表格文件(.xlsx、.xlsm、.csv、.tsv)。当用户要求创建、构建、修改、分析、读取、验证或格式化任何Excel电子表格、财务模型、数据透视表或表格数据文件时使用。涵盖:从头创建新的xlsx文件、读取和分析现有文件、零格式丢失地编辑现有xlsx文件、公式重新计算和验证、以及应用专业的财务格式标准。触发词包括'spreadsheet'、'Excel'、'.xlsx'、'.csv'、'pivot table'、'financial model'、'formula',或任何要求以Excel格式生成表格数据的请求。
41
下载量
命令行安装
在项目根目录执行以下命令,完成 Skill 安装。
npx bzskills add MiniMax-AI/skills --skill minimax-xlsx name: minimax-xlsx
description: 打开、创建、读取、分析、编辑或验证Excel/电子表格文件(.xlsx、.xlsm、.csv、.tsv)。当用户要求创建、构建、修改、分析、读取、验证或格式化任何Excel电子表格、财务模型、数据透视表或表格数据文件时使用。涵盖:从头创建新的xlsx文件、读取和分析现有文件、零格式丢失地编辑现有xlsx文件、公式重新计算和验证、以及应用专业的财务格式标准。触发词包括'spreadsheet'、'Excel'、'.xlsx'、'.csv'、'pivot table'、'financial model'、'formula',或任何要求以Excel格式生成表格数据的请求。
license: MIT
metadata:
version: "1.0"
category: productivity
sources:
- ECMA-376 Office Open XML File Formats
- Microsoft Open XML SDK documentation直接处理请求。不要派生子代理。始终写入用户要求的输出文件。
| 任务 | 方法 | 指南 |
|---|---|---|
| 读取 — 分析现有数据 | xlsx_reader.py + pandas | references/read-analyze.md |
| 创建 — 从零开始新建 xlsx | XML 模板 | references/create.md + references/format.md |
| 编辑 — 修改现有 xlsx | XML 解包→编辑→打包 | references/edit.md (+ 如果需要样式,则加上 format.md) |
| 修复 — 修复现有 xlsx 中损坏的公式 | XML 解包→修复 <f> 节点→打包 | references/fix.md |
| 验证 — 检查公式 | formula_check.py | references/validate.md |
references/read-analyze.md)从 xlsx_reader.py 开始进行结构发现,然后使用 pandas 进行自定义分析。切勿修改源文件。
格式规则:当用户指定小数位数(例如"保留两位小数")时,将该格式应用于所有数值——对每个数字使用 f'{v:.2f}'。当要求 12875.00 时,绝不要输出 12875。
聚合规则:始终直接从 DataFrame 列计算总和/平均值/计数——例如 df['Revenue'].sum()。在聚合之前绝不要重新派生列值。
references/create.md + references/format.md)复制 templates/minimal_xlsx/ → 直接编辑 XML → 使用 xlsx_pack.py 打包。每个派生值必须是 Excel 公式(<f>SUM(B2:B9)</f>),绝不要是硬编码数字。按照 format.md 应用字体颜色。
references/edit.md)关键 — 编辑完整性规则:
Workbook()。始终加载原始文件。xlsx_reader.py 或 pandas 打开并确认原始工作表名称和部分原始数据存在。如果验证失败,说明写错了文件——在交付前修复它。绝不要对现有文件使用 openpyxl 往返(会损坏 VBA、数据透视表、迷你图)。改为:解包 → 使用辅助脚本 → 重新打包。
"填充单元格" / "向现有单元格添加公式" = 编辑任务。 如果输入文件已存在且要求填充、更新或向特定单元格添加公式,必须使用 XML 编辑路径。绝不要创建新的 Workbook()。示例——用跨工作表 SUM 公式填充 B3:
python3 SKILL_DIR/scripts/xlsx_unpack.py input.xlsx /tmp/xlsx_work/
# 通过 xl/workbook.xml → xl/_rels/workbook.xml.rels 找到目标工作表的 XML
# 然后使用编辑工具在目标 <c> 元素内添加 <f>:
# <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/
# 重要:通过在工作表 XML 中搜索标签文本来找到正确的 --at 行,
# 而不是使用提示中的行号。
# 提示可能说"第 5 行(Office Rent)",但 Office Rent 实际上可能在
# 第 4 行。始终先通过文本标签定位行。
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 "标签" /tmp/xlsx_work/xl/worksheets/sheet*.xml 或检查 sharedStrings.xml)。对于 --at,使用实际行号 + 1。不要单独调用 xlsx_shift_rows.py——xlsx_insert_row.py 内部会调用它。
应用行级边框(例如,合计行的会计线):
在运行辅助脚本后,将边框应用于目标行的所有单元格,而不仅仅是新添加的单元格。在 xl/styles.xml 中,附加一个新的 <border> 并设置所需的样式,然后在 <cellXfs> 中附加一个新的 <xf>,该 <xf> 克隆每个单元格现有的 <xf>,但设置新的 borderId。通过 s 属性将新的样式索引应用于该行中的每个 <c>:
<!-- 在 xl/styles.xml 中,追加到 <borders>: -->
<border>
<left/><right/><top style="medium"/><bottom/><diagonal/>
</border>
<!-- 然后,对于每个现有样式,在 <cellXfs> 中追加一个设置了新 borderId 的 xf 副本 -->
关键规则:当任务说"为第 N 行添加边框"时,遍历从 A 到最后一列的所有单元格,而不仅仅是新添加的单元格。
手动 XML 编辑(用于辅助脚本未覆盖的任何情况):
python3 SKILL_DIR/scripts/xlsx_unpack.py input.xlsx /tmp/xlsx_work/
# ... 使用编辑工具编辑 XML ...
python3 SKILL_DIR/scripts/xlsx_pack.py /tmp/xlsx_work/ output.xlsx
references/fix.md)这是一个编辑任务。解包 → 修复损坏的 <f> 节点 → 打包。保留所有原始工作表和数据的完整性。
references/validate.md)运行 formula_check.py 进行静态验证。如果可用,使用 libreoffice_recalc.py 进行动态重新计算。
| 单元格角色 | 字体颜色 | 十六进制代码 |
|---|---|---|
| 硬编码输入 / 假设 | 蓝色 | 0000FF |
| 公式 / 计算结果 | 黑色 | 000000 |
| 跨工作表引用公式 | 绿色 | 00B050 |
xlsx_pack.py 打包formula_check.py 退出码 0 = 安全python3 SKILL_DIR/scripts/xlsx_reader.py input.xlsx # 结构发现
python3 SKILL_DIR/scripts/formula_check.py file.xlsx --json # 公式验证
python3 SKILL_DIR/scripts/formula_check.py file.xlsx --report # 标准化报告
python3 SKILL_DIR/scripts/xlsx_unpack.py in.xlsx /tmp/work/ # 解包以进行 XML 编辑
python3 SKILL_DIR/scripts/xlsx_pack.py /tmp/work/ out.xlsx # 编辑后重新打包
python3 SKILL_DIR/scripts/xlsx_shift_rows.py /tmp/work/ insert 5 1 # 为插入行而移动行
python3 SKILL_DIR/scripts/xlsx_add_column.py /tmp/work/ --col G ... # 添加带公式的列
python3 SKILL_DIR/scripts/xlsx_insert_row.py /tmp/work/ --at 6 ... # 插入带数据的行