Office Excel(.xlsx 读写纪律)
改编自 anthropics/skills xlsx(Apache 2.0)。
用本插件(xlsx_read / xlsx_write / xlsx_edit)交付 Excel 文件时,遵守以下纪律。
1. 能用公式绝不硬编码计算值
- 汇总、合计、比率一律写公式(
{ formula: 'SUM(B2:B10)' }),不要把算好的结果写死。 - 交付的表格必须保持动态可重算:用户改了源数据,合计列应自动更新。写死的数字会在源数据变更后悄悄变成错误答案。
- 公式在
xlsx_read中以=SUM(...)原文显示,交付前读回自查一遍公式是否正确。
2. 零公式错误纪律
#REF! / #DIV/0! / #VALUE! / #NAME? 一个都不允许出现在交付物里。常见成因与预防:
- 行列从 1 开始:
A1是第一个单元格,不存在第 0 行/第 0 列。越界引用直接#REF!。 - 跨 sheet 引用用
Sheet1!A1语法;sheet 名含空格或特殊字符时用单引号'My Sheet'!A1。 - 除零检查:除法公式先确认分母列无空值/零值,必要时
IF(B2=0, 0, A2/B2)。 - 类型一致:文本列与数字列混算得
#VALUE!;写入时不要把数字写成带引号的字符串。 - 函数名拼写:
#NAME?几乎都是函数名拼错或用了不存在的函数。
3. 数字格式约定(用 number_formats 设置)
- 货币:
$#,##0(或¥#,##0) - 百分比:
0.0% - 倍数:
0.0x - 负数用括号表示:
#,##0;(#,##0) - 年份作为文本写入(如
'2024),防止被加千分位显示成2,024
4. 假设参数放独立单元格
- 增长率、折扣率、汇率等假设值单独放一个单元格,公式引用它:
=B5*(1+$B$6),而不是=B5*1.05。 - 用
$B$6绝对引用锁定假设单元格,下拉填充时不会漂移。 - 这样用户改假设即可全表重算,不用改任何公式。
5. 修改已有模板时沿用其既有约定
- 用
xlsx_read先看清原文件的表头、格式、公式风格,再动手。 - 严格沿用模板自己的数字格式、列宽、命名习惯——不把自己的风格强加进去。
- 只改该改的单元格(
xlsx_edit的update_cells/append_rows),不要整体重写文件。