Excel中

时间:2016-01-20 20:44:56

标签: excel

我为我的一个客户开发了一个Excel解决方案,该解决方案围绕一个大表(直到DI列)。它充满了大约25%的数据和75%的公式。当我们现在粘贴43000行数据时,Excel 2010开始呻吟和呱呱叫。保存工作簿并重新打开后,Excel需要很长时间才能告诉工作簿已损坏。

我已经排除了我们开始使用腐败工作手册的可能性;我用新鲜的大小相似的表启动了一本新工作簿,添加了43000行数据(这很快),并逐个添加所有公式(通过复制公式文本,而不仅仅是复制/粘贴单元格)。保存并重新打开工作簿后,它再次损坏。

我已经尝试了10000行,这很好。大约18000行,这个问题再一次让人头疼。我还删除了表格中的所有格式,但这没有任何区别。

这是一个已知问题吗?你们中的任何人都知道表格是否有安全的行/单元格/复杂性限制?我应该向微软发布一个错误报告,还是这个自我造成的? :)

ADDED

感谢@Jeeped我已经使用.XLSB格式研究了它的行为,并且在该格式下文件很好。重新保存为.XLSX,文件立即被损坏"再次 - 即Excel打开它时实际上崩溃了。使用XMLStarlet检查它时,工作表本身的XML似乎是有效的(它包含1250万个元素);它可能是Excel加载例程中的一个错误?

1 个答案:

答案 0 :(得分:1)

经过多次尝试后,我确信这是Excel加载例程中的一个错误。当我将表推到某个限制时,生成的文件将不再打开,导致Excel崩溃或告诉我工作簿已损坏。在问题中提到的文件中,限制发生在大约20000行。但是:

  • 虽然保存为.xlsx意味着该文件已损坏,例如20000行,但将其保存为.xlsb并未真正修复它,但它将限制提高了两倍至约40000(足够用于此项目,但仍然没有令人满意的)。
  • 表格中的列数很重要;列越多,我需要的行就越少。
  • 列中公式的性质很重要;我有4个包含大量公式的列(CHOOSE有很多参数),只是删除那些使最大行数增加了2倍。
  • 当创建仅在最大行数上的工作簿时,在另一个工作簿打开时从Excel中打开它会导致Excel出错,而关闭Excel并从资源管理器中打开它不会导致Excel出错。

所以,我想除了希望微软有一天能解决这个问题并且同时应用变通方法之外别无其他解决方案。