!封面
这是"AI 不喜欢系列"的第三篇。
第一篇讲了 .docx——本质是 ZIP + XML 文档工程包,人类用它编辑和协作,AI 被样式碎片和修订痕迹折磨。
第二篇讲了 PDF——本质是固定版面的电子纸,人类用它归档和签章,AI 连正文在哪里都不知道。
这一篇讲 Excel。和前两篇有个重要区别:Excel 有两种格式,得先分清楚。
一、.xls 和 .xlsx:不是同一代人
很多人以为 .xls 和 .xlsx 只是版本不同。实际上它们是两种完全不同的文件格式。
.xls 是老式二进制格式。 Excel 97-2003 时代的产物,基于 Microsoft 的 OLE 复合文档结构。你可以把它理解成一个 Excel 专用的二进制容器——不是文本,不是 XML,不是 ZIP。把 .xls 改成 .zip 解压不了。要读取它,需要专门的解析器:Excel 本身、LibreOffice、Python 的 xlrd、Apache POI,或者商业库如 Aspose。
.xlsx 是新式 ZIP + XML 格式。 Excel 2007 之后的默认格式,和 .docx 是同一套设计哲学。把 表格.xlsx 改成 表格.zip,解压后你能看到:
[Content_Types].xml
\_rels/
docProps/
xl/
核心在 xl/ 目录里:
xl/workbook.xml — 工作簿结构
xl/worksheets/sheet1.xml — 第一个工作表
xl/sharedStrings.xml — 重复文本的字符串池
xl/styles.xml — 字体、边框、颜色、数字格式
xl/theme/theme1.xml — 主题
xl/\_rels/workbook.xml.rels — 关系文件
和 .docx 一模一样的配方:ZIP 壳 + XML 肉 + 关系文件做胶水。
所以先记住一个简单结论:.xls ≈ 老式二进制黑盒,.xlsx ≈ ZIP + XML 表格包。 AI 对 .xlsx 的处理能力比 .xls 好很多,但两种格式都有各自的麻烦。
二、人类为什么离不开 Excel?
Excel 不是单纯的表格工具。它是一个轻量级业务系统。
它能同时承载数据录入、计算公式、筛选排序、统计汇总、图表展示、格式标注、批量清单、财务测算、项目管理和台账维护——一个文件解决从原始数据到分析结论的全链条。
法律和商业场景里,Excel 几乎无处不在:工程款结算表、付款台账、债权债务明细、房源清单、股权结构表、投资测算表、诉讼案件台账、证据目录、合同履行进度表、违约金计算表、报销费用清单。
人类喜欢 Excel 的原因就一句话:它既能看,又能算,还能改。
但这恰好也是 AI 头疼的根源。
三、AI 为什么头疼?七个核心问题
1. 单元格是二维坐标,不是自然语言
AI 最喜欢的输入是连续文本:
甲方应于合同签订后 15 日内支付第一期款项。
Excel 给你的却是二维网格:
A1: 付款节点
B1: 比例
C1: 条件
A2: 第一期
B2: 30%
C2: 合同签订后 15 日内
AI 得自己判断:第一行是不是表头,每一列是什么字段,每一行是不是一条独立记录。人眼扫一下就懂的事,机器要多做好几步推理。
2. 合并单元格:人类的美观,AI 的噩梦
很多 Excel 这样设计:
A1:C1 合并 → "某项目付款计划表"
A2:A5 合并 → "一期工程"
B2: 第一笔
B3: 第二笔
B4: 第三笔
人类自然知道 B2、B3、B4 都归属于"一期工程"。但程序读取时,只有 A2 单元格有值,A3、A4、A5 是空的。如果不做合并单元格填充,AI 看到的是:
一期工程 | 第一笔
空 | 第二笔
空 | 第三笔
上下文断了。
法律场景里这尤其危险。比如"违约责任"四个字是跨行合并的标题,下面列着"第 1 项:逾期付款""第 2 项:逾期交付"。如果"违约责任"丢了,AI 不知道这两行属于哪个类别。
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 260">
<!-- 左侧:人类看到的 -->
<rect x="20" y="15" width="270" height="230" rx="4" fill="#f5faf5" stroke="#4a9e4a" stroke-width="1.5"/>
<text x="155" y="42" text-anchor="middle" font-size="14" font-weight="700" fill="#4a9e4a">人类看到的</text>
<!-- 模拟表格 -->
<rect x="40" y="55" width="230" height="26" rx="2" fill="#e8f5e8" stroke="#4a9e4a" stroke-width="0.5"/>
<text x="155" y="73" text-anchor="middle" font-size="11" fill="#333" font-weight="600">违约责任(合并单元格标题)</text>
<rect x="40" y="81" width="115" height="22" fill="#fff" stroke="#ccc" stroke-width="0.5"/>
<rect x="155" y="81" width="115" height="22" fill="#fff" stroke="#ccc" stroke-width="0.5"/>
<text x="97" y="96" text-anchor="middle" font-size="10" fill="#333">第1项:逾期付款</text>
<text x="212" y="96" text-anchor="middle" font-size="10" fill="#555">0.05%/日</text>
<rect x="40" y="103" width="115" height="22" fill="#fff" stroke="#ccc" stroke-width="0.5"/>
<rect x="155" y="103" width="115" height="22" fill="#fff" stroke="#ccc" stroke-width="0.5"/>
<text x="97" y="118" text-anchor="middle" font-size="10" fill="#333">第2项:逾期交付</text>
<text x="212" y="118" text-anchor="middle" font-size="10" fill="#555">0.05%/日</text>
<text x="155" y="150" text-anchor="middle" font-size="10" fill="#4a9e4a">"违约责任"覆盖下面两行 ✓</text>
<!-- 右侧:AI 读到的 -->
<rect x="310" y="15" width="270" height="230" rx="4" fill="#fff5f5" stroke="#c41e3a" stroke-width="1.5"/>
<text x="445" y="42" text-anchor="middle" font-size="14" font-weight="700" fill="#c41e3a">AI 读到的(未填充合并单元格)</text>
<rect x="330" y="55" width="230" height="26" rx="2" fill="#ffe8e8" stroke="#c41e3a" stroke-width="0.5"/>
<text x="445" y="73" text-anchor="middle" font-size="11" fill="#c41e3a" font-weight="600">违约责任</text>
<rect x="330" y="81" width="115" height="22" fill="#fff" stroke="#ccc" stroke-width="0.5"/>
<rect x="445" y="81" width="115" height="22" fill="#fff" stroke="#ccc" stroke-width="0.5"/>
<text x="387" y="96" text-anchor="middle" font-size="10" fill="#c41e3a">第1项:逾期付款</text>
<text x="502" y="96" text-anchor="middle" font-size="10" fill="#555">0.05%/日</text>
<rect x="330" y="103" width="115" height="22" fill="#fff" stroke="#ccc" stroke-width="0.5"/>
<rect x="445" y="103" width="115" height="22" fill="#fff" stroke="#ccc" stroke-width="0.5"/>
<text x="387" y="118" text-anchor="middle" font-size="10" fill="#555">第2项:逾期交付</text>
<text x="502" y="118" text-anchor="middle" font-size="10" fill="#555">0.05%/日</text>
<text x="445" y="150" text-anchor="middle" font-size="10" fill="#c41e3a">第2项丢了归属 ✗</text>
<!-- 底部说明 -->
<rect x="40" y="180" width="520" height="55" rx="3" fill="#f8f8f8" stroke="#ddd" stroke-width="1"/>
<text x="300" y="200" text-anchor="middle" font-size="12" fill="#555">合并单元格只有左上角有值,其余位置为空</text>
<text x="300" y="222" text-anchor="middle" font-size="12" fill="#555">不做"向下填充",AI 丢失层级归属关系</text>
</svg>
3. 一个 sheet 里塞了好几个表
标准数据表很简单:第一行字段名,后面每行一条记录。
但真实世界的 Excel 很少这么干净。更常见的布局是:上面有标题,中间有说明文字,左边是主表,右边是备注列,下面是汇总行,旁边还有临时计算区。
比如一个工程款结算的 sheet:
A1: "XX 项目结算汇总表"
A3:D10: 工程款明细
F3:H8: 税费测算
A13:D16: 付款计划
A20:D25: 争议金额说明
人类靠视觉位置自然区分这些区域。AI 得先做表格区域识别——哪里是表,哪里是标题,哪里是脚注,哪里是备注,哪里是计算区。这比读 CSV 多了好几层推理。
4. 公式结果和公式本身:两套信息
Excel 的核心价值是公式。一个单元格显示 1,000,000,背后可能是 =B2*C2-D2。
AI 分析时要做一个选择:看计算结果,还是审查公式逻辑,还是两者都要?
违约金计算表里,=本金 日利率 逾期天数——只读结果不知道逻辑对不对,只读公式不知道当前数值是多少。
再加上公式引用错误、隐藏行列、手工覆盖公式、外部链接、循环引用、跨 sheet 引用、公式缓存未更新——Excel 对 AI 来说不是简单的"读表",而是要判断每个数字到底是输入值、计算值、汇总值,还是人工拍的结果。
5. 显示值和真实值不一样
一个单元格显示 2024 年 5 月 1 日,内部值可能是 45413——因为 Excel 的日期本质是序列号。
显示 30%,内部值是 0.3。显示 1,000,000.00,内部值是 1000000。
AI 如果只拿到原始值,觉得莫名其妙;只拿到显示值,又丢了精确计算能力。
法律场景里特别注意:0.05%/日 不能误读成 0.05/日——差 100 倍。
6. 隐藏的内容:你以为没有,AI 可能读到了
Excel 可以隐藏行、隐藏列、隐藏 sheet、筛选后的数据、批注、公式、受保护区域。
人打开文件时可能只看到筛选后的 20 行。但程序读取时可能读到全部 2000 行。反过来——重要信息藏在隐藏 sheet 里,AI 默认没读到——问题更大。
法律尽调、财务审查、证据分析中,这种"看到的不全,读到的也不全"是个实实在在的坑。
7. 颜色标注不是稳定语义
真实 Excel 重度依赖视觉标注:红色是有问题,黄色是待确认,绿色是已完成,删除线是不采用,加粗是小计,灰色是不计入。
但这些规则不在数据里。人类凭经验知道"黄色单元格要重点看",AI 只读文本时完全感受不到。即使读到了样式信息,也不知道这个颜色在这个文件里代表什么。没有图例,颜色就是噪音。
四、Excel vs 它的同类:一张表
| 格式 | 本质 | 人类喜欢它的原因 | AI 不喜欢它的原因 |
|------|------|-----------------|------------------|
| .xls | 老式二进制表格 | 兼容旧系统,老业务表多 | 二进制黑盒,解析复杂 |
| .xlsx | ZIP + XML 表格包 | 能算、能排版、能做台账 | 合并单元格、公式、样式、隐藏数据 |
| .csv | 纯文本二维表 | 简单、可交换、可 diff | 样式和公式丢失(但 AI 最喜欢) |
五、为什么 AI 最喜欢 CSV?
CSV 长这样:
付款节点,付款比例,付款条件
第一期,30%,合同签订后 15 日内
第二期,50%,主体验收后
第三期,20%,竣工验收后
它的好处很朴素:一行一条记录,一列一个字段,没有合并单元格,没有复杂样式,没有隐藏对象,没有公式依赖。容易 diff,容易入库,容易分析。对 AI 来说它接近数据库表——这恰恰是 AI 最舒服的输入形态。
代价当然也有:没有样式,没有公式,没有多个工作表,不适合复杂排版,不适合人类做综合台账。
所以实际工作里的分工应该是:
- Excel:给人维护和协作
- CSV:给机器读取和分析
- JSON:给系统表达复杂嵌套结构
- Markdown:给 AI 处理文字说明
六、法律场景下的实操建议
证据目录、案件台账、合同清单——尽量用规范表格。第一行就是字段名,一行只放一条记录,不要合并单元格,不要空行隔开,不要一个 sheet 放多个表,不要只用颜色表达含义。
比如:
证据编号 | 证据名称 | 形成时间 | 证明目的 | 页码
证据 1 | 施工合同 | 2021-01-01 | 证明合同关系 | 1-20
证据 2 | 付款凭证 | 2021-03-01 | 证明付款事实 | 21-25
这种表 AI 读起来毫无压力。
工程款、违约金、利息计算表——保留公式和计算结果两套信息。最好加上:本金、起算日、截止日、天数、日利率、计算公式、计算结果。不要只给一个最终金额。AI 审查计算逻辑时,需要看到"这个金额是怎么算出来的"。
复杂 Excel——先拆分再交给 AI:
Excel 原件(保留)
↓ 拆分每个 sheet
↓ 识别每个表格区域
↓ 转成 CSV / JSON
↓ 附上字段解释
↓ 再交给 AI 分析
七、三篇一起看
这个系列写了三种办公格式,结论可以汇成一张表:
| | .docx | PDF | .xlsx |
|------|------|-----|------|
| 本体 | ZIP + XML 文档包 | 固定版面电子纸 | ZIP + XML 表格包 |
| 人的需求 | 编辑、批注、协作 | 归档、签章、打印一致 | 计算、排版、台账 |
| AI 的痛点 | 文本被样式切碎 | 缺少语义结构 | 合并单元格、公式、样式噪声 |
| 一句话 | 装修好的办公室 | 办公室的高清照片 | 塞满便签和公式的工作台 |
三种格式,一个共同规律:人类靠视觉和经验理解文件,AI 靠结构和文本。越灵活、越视觉化、越依赖人工习惯的格式,AI 越头疼。
所以最务实的策略不是"不用这些格式"——在法律行业不可能。而是建立一条清晰的转换流水线:人用 Office 格式协作和交付,机器用 Markdown/CSV/JSON 理解和分析,各取所需,互不耽误。
作者简介: 陈石律师,浙江海泰律师事务所副主任、高级合伙人、房地产与建设工程部主任,宁波市律师协会副秘书长、第七届宁波仲裁委员会仲裁员,聚焦建筑房地产、投融资、并购重组及商事争议解决。曾获多家法律媒体与专业机构认可,荣登 LegalOne 2025 中国区建工及房地产实务先锋 45 强、律新社 2025 年度管理合伙人 20 佳(华东),入选《商法》The A-List 法律精英,获评 ALB China 区域市场十五佳长三角地区律师新星,并获律新社 2024 年度并购领域品牌之星。长期为万科、华润置地、信达地产、保利置业、招商蛇口、中海地产等企业提供法律服务,承办"首宗百亿地王""长春第一高楼""台州第一高楼"等代表性项目,累计服务项目投资额超千亿。近年来持续推动 AI 与法律实务融合,强调以结构化方法打通技术逻辑、法律判断与商业场景;著有《赋能法律人:AI 底层思维与应用范式》,并在多地开展相关主题讲座与分享。四明山法师 AI 夜校(legalAGI.cn)发起人。