直到Office 2007版本之前,Excel的最大行数为65,000。Office 2007将这一限制扩大到了最多1百万行,这当然更好;但我很好奇——为什么会有限制呢?显然,随着电子表格大小的增加,性能会成倍地下降;但Excel应该很容易通过从小表开始并根据需要动态“调整”大小来优化它。
考虑到从65K到1百万的限制增加工作量如此巨大,为什么他们不去做到只限于可用内存和磁盘空间的数量呢?
直到Office 2007版本之前,Excel的最大行数为65,000。Office 2007将这一限制扩大到了最多1百万行,这当然更好;但我很好奇——为什么会有限制呢?显然,随着电子表格大小的增加,性能会成倍地下降;但Excel应该很容易通过从小表开始并根据需要动态“调整”大小来优化它。
考虑到从65K到1百万的限制增加工作量如此巨大,为什么他们不去做到只限于可用内存和磁盘空间的数量呢?
可能是因为优化的原因。Excel 2007 最大可以有 16,384 列和 1,048,576 行。奇怪的数字?
14 位二进制数 = 16,384,20 位二进制数 = 1,048,576。
14 位加上 20 位等于 34 位,超过了一个 32 位寄存器能够容纳的范围。
但他们还需要存储单元格的格式(文本、数字等)和样式(颜色、边框等)。假设他们使用两个 32 位字(64 位),他们会将 34 位用于单元格编号并留下 30 位供其他用途。
这为什么很重要?在内存中,他们不需要为整个电子表格分配所需的所有内存,而只需为数据所需的内存分配即可,并且每个数据都标记了它应该在哪个单元格中。
更新 2016:
找到了一篇关于 Excel 2013 和 2016 的 Microsoft 规格说明 的链接。
简而言之,速度是最关键的。索引可适用于100万行以内的数据,可以在32位处理器上高效使用。能够适应CPU寄存器大小的函数参数非常高效,而更大的参数需要在每次函数调用时访问内存,这是一种远慢于前者的操作。更新电子表格可能涉及多个单元格引用,因此速度至关重要。此外,Excel团队预计,处理超过100万行的任何人都将使用数据库而不是电子表格。