利用 AI 精通 XLSX 文件:结构、限制与最佳实践

XLSX 文件并不是电子表格。它是一个由 XML 文档组成的压缩包,供电子表格应用程序读取。这一事实解释了人们遇到的大多数异常行为:文件体积膨胀、公式以奇怪的顺序重新计算,以及看起来很小的工作簿却需要极长时间才能打开。
本指南介绍了该格式的内部结构、Microsoft 公布的限制,以及使 XLSX 文件保持可供他人使用的习惯。
XLSX 文件的本质是什么
XLSX 是随 Office Open XML 标准引入的默认 Excel 格式。旧的二进制格式将所有内容存储在一个不透明的二进制大对象(blob)中,而 XLSX 则在容器内存储结构化的 XML 部分。
这一变化正是现代工具在未安装 Excel 的情况下也能读取该格式的原因。这也是为什么可以对 XLSX 文件进行检查、对比(diff)和修复,而其前身却无法做到。
对于任何处理数据的人来说,实际的影响是:一个 XLSX 文件承载的内容远不止数值。格式、公式、透视缓存、条件规则和计算顺序都会随之同行。
压缩包内部结构
Microsoft 的 SpreadsheetML 文档精确地描述了其骨架。该结构“由 <workbook/> 元素组成,其中包含引用工作簿中工作表的 <sheets/> 和 <sheet/> 元素。”
接下来是让大多数人感到惊讶的细节。“为每个工作表创建了一个单独的 XML 文件。”一个有十个标签页的工作簿至少是十个文档加上一个清单,而不是一个包含十个部分的文件。
Microsoft 将这些列为“有效电子表格文档所需的最小元素”。除此之外,工作簿“可能包含 <table/>、<chartsheet/>、<pivotTableDefinition/> 或其他与电子表格相关的元素。”
其中四个额外部分解释了现实世界中大多数文件的行为。
共享字符串表。Microsoft 将 <sst/> 描述为“一种结构,包含工作簿中所有工作表上出现的每个唯一字符串的一次出现。”文本仅存储一次并在所有地方被引用,这就是为什么重复率高的文件压缩效果很好的原因。
计算链。<calcChain/> “指定了工作簿中单元格上次计算的顺序。”它是一个缓存,损坏的计算链是导致工作簿行为异常的经典原因,直到该部分被丢弃才会恢复正常。
透视缓存。<pivotCacheDefinition/> 定义了数据透视表的数据源,而 <pivotCacheRecords/> 则保存“源数据的缓存”。因此,数据透视表可以在文件内部携带其源行数据的完整副本。
表和图表工作表。<table/> 将一个区域标记为单个数据集,而 <chartsheet/> 是作为独立工作表存储的图表。
Microsoft 还引用了 ECMA-376 标准作为底线:最小的空白工作簿仍然需要一个工作表、一个工作表 ID 和一个关系。根本不存在空无一物的 XLSX 文件。
XLSX 对比 CSV
两种格式都保存表格数据。但在其他所有方面,它们都截然不同。
| XLSX | CSV | |
|---|---|---|
| 容器 | XML 部分的压缩包 | 单个纯文本文件 |
| 多张工作表 | 是 | 否 |
| 公式 | 已存储,带有计算链 | 不支持 |
| 格式和类型 | 保留 | 不保留 |
| 图表和数据透视表 | 存储在文件内部 | 不支持 |
| 无需工具即可阅读 | 否 | 是 |
| 典型故障模式 | 体积膨胀和隐藏状态 | 类型丢失和分隔符歧义 |
抽象地讲,这两种格式并没有优劣之分。当接收端的机器只需要行数据时,CSV 胜出,这正是我们的 CSV 文件精通指南中详细介绍的情况。
当接收端的人员需要结构时,XLSX 胜出。例如标签页布局、数字格式,以及只有放在相邻列旁才有意义的备注列。
错误的做法是将 XLSX 用作系统之间的传输格式。所有这些额外的状态都必须由某些程序进行解析,而且当目的地是数据库时,它不会带来任何好处。
Microsoft 公布的限制
Microsoft 的 规格与限制页面列出了硬性上限。这些是在处理实际导出时至关重要的限制。
| 项目 | 公布的限制 |
|---|---|
| 工作表上的行数和列数 | 1,048,576 行乘以 16,384 列 |
| 单个单元格中的字符数 | 32,767 |
| 工作簿中的工作表数 | 受可用记忆限制 |
| 公式内容的长度 | 8,192 个字符 |
| 列宽 | 255 个字符 |
| 每个数据透视表字段的唯一项 | 1,048,576 |
| 数据透视表中的报表筛选 | 256 |
文件大小值得单独说明,因为答案不是一个数字。Microsoft 指出,“64 位环境对文件大小没有硬性限制。”相反,“工作簿大小仅受可用记忆和系统资源的限制。”
对于仍在使用 32 位 Excel 的人来说,还有一个相关的细节。Microsoft 表示,从 Excel 2016 开始,大地址感知(Large Address Aware)功能“允许 32 位 Excel 在 64 位 Windows 操作系统上消耗两倍的记忆”。
公布的数据适用于 Excel for Microsoft 365、2024、2021、2019 和 2016。
这些限制在实践中意味着什么
行数上限被提及最多,但最不重要。极少有团队会达到 1,048,576 行,而那些达到这一上限的团队通常已经因为其他原因不再适合使用电子表格了。
真正带来麻烦的限制往往更隐蔽。在某些导入路径中,限制为 32,767 个字符的单元格会静默截断长文本字段。而限制为 256 个报表筛选的数据透视表,只有在报表增长了两年之后才会出现故障。
记忆才是真正的制约因素。工作表数量和文件大小都受可用记忆的限制,而不是一个固定的数字。因此,同一个 XLSX 文件在一部机器上可以正常打开,而在另一部机器上却可能会卡死。
有三件事比行数更容易增加记忆开销:保存源数据副本的透视缓存、应用于整列而非已用区域的格式设置,以及引用整列的公式。
供他人打开的 XLSX 文件的最佳实践
每张工作表只保留一个表。一张包含三个堆叠表的工作表对大多数工具来说都很难解析,而且通常需要人工先进行解释。
将表头放在单行顶部。合并单元格或双层表头几乎会破坏所有下游工具,它们是导致导入返回无意义内容的最常见原因。
只对已用区域进行格式设置,而不是整列。选择 A 列来应用填充是让文件增加数兆字节最快的方法。
不要在文件中隐藏状态。隐藏的工作表、筛选的视图和手动计算模式都会随工作簿一起保存,并给下一个人带来意外。
当只需要数值时,只发送数值。如果接收方只需要数字,导出为 CSV 可以消除一整类问题。
为外部人员命名。列名就是接口,解决混乱工作簿最快的方法通常是在旁边附上一个简短的词典。
什么时候 XLSX 不再是合适的容器
XLSX 文件是一个好文档,但只是一个平庸的数据库。它能很好地保存一个团队的工作副本,但一旦需要多个人同时对其进行修改,它就会崩溃。
迹象是一致的:文件名增加了版本后缀;两个人引用的总数不同;有人在维护一个用于对账其他标签页的标签页。
此时,文件本身并不是需要解决的问题,围绕它的工作流才是。换用更大的电子表格只会推迟清算的日子。
无需手动处理 XLSX 文件
XLSX 文件产生的大多数工作并不是分析,而是连续第三个月打开、扫描、重新格式化和重建同一个图表。
Powerdrill Bloom 承担了这一半的工作。您只需上传工作簿,并用自然语言描述您需要从中获取什么。返回的将是一个成型的产物:摘要、图表、幻灯片或 Excel 分析。免费计划中列出了 Excel、CSV、PDF 和文档的上传,而 Pro 计划则增加了幻灯片、Office 文档和 Excel 分析。
我们的 Excel AI 助手页面介绍了直接途径,而 Excel AI 工具中心则列出了更具体的任务。利用 Excel 制作图表页面涵盖了图表制作方面。如果您宁愿跳过数据透视表部分,不使用数据透视表汇总 Excel 数据则介绍了替代方案。
了解格式能让您免受麻烦。将重复的部分交给其他工具,则能为您赢回下午的时光。在您最混乱的工作簿上尝试 Powerdrill Bloom 吧。
常见问题解答
XLSX 代表什么?
它是 Office Open XML 电子表格格式的文件扩展名。最后的 X 反映了该压缩包包含 XML 部分,而不是旧的二进制布局。
一个 XLSX 文件可以容纳多少行?
Microsoft 公布的工作表限制为 1,048,576 行乘以 16,384 列。一个工作簿可以包含多张工作表,受可用记忆的限制,而不是固定的数量。
XLSX 文件有最大大小限制吗?
没有固定的限制。Microsoft 表示,64 位环境对文件大小没有硬性限制。工作簿大小仅受可用记忆和系统资源的限制。
为什么我的 XLSX 文件这么大?
通常的原因是应用于整列的格式设置、存储了源行数据第二份副本的透视缓存以及图像。单凭行数很少能解释这一点。
我应该使用 XLSX 还是 CSV 来共享数据?
当人员需要结构、公式或多张工作表时,使用 XLSX。当系统只需要行数据,而其他所有内容都是开销时,使用 CSV。