为什么在Microsoft Excel中仍然存在行限制?

在Office 2007之前,Excel最多有65,000行。 Office 2007碰撞到最多100万行,这当然更好; 但我很好奇 – 为什么有一个限制呢? 显然,随着您增加电子表格的大小,性能会显着下降; 但是通过从一张小表开始,并根据需要dynamic“重新resize”来优化Excel应该不是很困难。 考虑到将限制从65K增加到100万,工作量有多大,为什么它们不能一路走下去,所以它只受可用内存和磁盘空间的限制?

(由于错误而更新…对每个人的build议:在完全清醒之前,不要在SO上发帖)

可能是因为优化。 Excel 2007最多可以有16 384列和1 048 576行。 奇怪的数字?

14位= 16 384,20位= 1 048 576

14 + 20 = 34位=多于一个32位寄存器可以容纳。

但他们也需要存储单元格的格式(文本,数字等)和格式(颜色,边界等)。 假设他们使用两个32位字(64位),它们使用34位作为单元号,而其他的则用30位。

为什么这很重要? 在内存中,他们不需要分配整个电子表格所需的所有内存,而只需分配数据所需的内存,并且每个数据都标记在应该在哪个单元格中。

2016年更新:

find一个链接到微软Excel 2013和2016的规范

  • 打开工作簿:受可用内存和系统资源的限制
  • 工作表大小:1,048,576行(​​20位)乘16,384列(14位)
  • 列宽度:255个字符(8位)
  • 行高:409点
  • 分页符:1,026水平和垂直(意外的数字,可能是错误的,10位是1024)
  • 单元格可以包含的字符总数:32,767个字符(有符号16位)
  • 页眉或页脚中的字符:255(8位)
  • 工作簿中的表格:受可用内存限制(默认为1张)
  • 工作簿中的颜色:1600万种颜色(32位可全面访问24位色谱)
  • 在工作簿中命名视图:受可用内存限制
  • 独特的单元格格式/单元格样式:64,000(16位= 65536)
  • 填充样式:256(8位)
  • 线宽和样式:256(8位)
  • 独特的字体types:1,024(10位)可用的全球字体; 每个工作簿512个
  • 工作簿中的数字格式:200到250之间,取决于您安装的Excel的语言版本
  • 工作簿中的名称:受可用内存限制
  • 工作簿中的Windows:受可用内存限制
  • 工作表中的超链接:66,530个超链接(意外数字,可能是错误的,16位= 65536)
  • 窗口中的窗格:4
  • 链接的页面:受可用内存限制
  • 情况:受可用内存限制; 总结报告仅显示前251个情景
  • 更改场景中的单元格:32
  • 求解器中的可调节单元:200
  • 自定义function:受可用内存限制
  • 缩放范围:10%到400%
  • 报告:受可用内存限制
  • sorting引用:64在一个单一的sorting; 使用顺序sorting时无限制
  • 撤消级别:100
  • 数据表单中的字段:32
  • 工作簿参数:每个工作簿255个参数
  • 筛选器下拉列表中显示的项目:10,000

一言以蔽之。 多达一百万行的索引适合于32位字,因此可以在32位处理器上高效使用。 适合CPU寄存器的函数参数非常有效,而较大的函数参数需要在每个函数调用中访问内存,这是一个非常慢的操作。 更新电子表格可能是一个涉及许多单元格引用的密集操作,所以速度很重要。 此外,Excel团队希望任何人处理一百多万行将使用数据库而不是电子表格。