诊断缓慢的Excel电子表格?


13

一位客户与我联系,抱怨打开时间太长的Excel电子表格。他们使用Excel创建发票,因此他们拥有数百个具有浅色格式和非常简单计算的Excel电子表格。当按大小对电子表格进行排序时,我看到虽然大多数电子表格的大小在10-250k之间,但是有少数电子表格的文件大小为2-3 MB或更大。奇怪的是,文件大小并不大,它们没有太多的数据,只是一点点格式化,也许是两到三页的打印发票,但是它们的数据量几乎与较小的电子表格(和正常打开的电子表格)相同。

打开文件时,所需的RAM数量将从3 MB飙升至400 MB,并且在启动时将完全占据一个单核(在办公室的双核和我的四核笔记本电脑上进行了测试)。我以为他们以某种方式捕获了一些VBA代码,但是没有宏,也没有VBA代码。Ctrl + End显示39行和大约12列(以M结尾)。我什至删除了数据(逐行或逐列),直到没有数据可用,它仍然给我同样的问题。

我已经审查了很多Google搜索,但是却一无所获。谁能提供任何帮助?


另一个有趣的注意事项:我无法将xlsx文件另存为Excel 2007中的xls文件,但是通过将其导入Google文档,然后将其另存为xls文件,我又得到了一个正常大小的文件。
西蒙·霍瓦

Answers:


7

我已经找到问题的答案!

利用allquixotic提供给我的线索,我以7-Zip打开了xlsx文件,并比较了文件大小。有一个文件,这是很多比别人大。文件xl \ drawings \ drawing1.xml是一个文件,其中包含多次对格式的引用。

我花了几个小时试图找出一种模式,但未能做到。我无能为力!然后,经过一番努力,我只是删除了该死的文件,并尝试在Excel中重新打开(2010年-在Excel 2007中未对其进行测试)。

它抱怨文件已损坏,并询问我是否要修复。修复文件只是消除了形状,但根本没有改变文件的格式。我不得不将文件重新保存为相同的文件,这有点奇怪,但它确实有效!

如前所述,我没有针对Excel 2010以外的任何产品测试此解决方案,因此我不知道形状文件对于Excel 2k7或任何OpenOffice产品是否至关重要。但是,如果您遇到类似的问题,希望对您有所帮助。


我遇到了具有相同问题的文件。我没有删除drawing1.xml,而是从sheet1.xml中删除了对图形的引用,并“另存为”。可能的原因可能是从邮件,互联网或其他表单中复制数据或格式化的字符串。
安德烈(Andrei)

1
遇到类似情况。在我的情况下,有几个drawingN.xml,大小从“可接受”的200 KB到80 MB不等。该文件甚至可以使具有16GB RAM的四核台式机瘫痪。删除所有drawingN.xml(由于Excel文件甚至不包含任何图表)都可以解决该问题,在撰写本文时,它可以在最新的Office 365上运行。
Martheen Cahya Paulo

6

您使用的是二进制.xls格式还是新的基于XML的.xlsx格式?通常,.xlsx格式会大大减少文件大小。

检查文档中存储的样式是否过多。

尝试“删除个人信息”(Excel / Word / etc。的功能)以清除文件中可能存在的某些类型的碎片。

如果电子表格已被共享或以前已被共享,则其中可能存储有旧的共享数据。

一个简单的修复方法是将电子表格中的相关数据仅复制并粘贴到新数据中,然后将其保存为.xlsx格式,然后查看其大小。如果非常小,那么您有答案了-Excel对内部文件格式的数据结构的会计处理很差。

还要检查复杂或圆形的公式以及对外部工作表的引用(尤其是网络驱动器上的参考)。如果您认为公式可能比较慢,则可以使用公式审核工具逐步解决它。

最后一件事:如果将其另存为.xlsx并且仍然很大,请尝试下载OpenXML SDK生产率工具:http : //www.microsoft.com/zh-cn/download/details.aspx?id= 5124

在其中打开.xlsx,然后查看文件中的所有元素,看看是否有明显多余的东西。这可能需要了解XML和特定的OpenXML架构,但是这是找出导致the肿的原因的可靠方法。

PS-如果这种事情使您烦恼,请停止使用Microsoft格式/程序,或建议您的客户这样做。如果您四处搜索“ Microsoft Access数据库膨胀”,您会发现Microsoft具有悠久的历史,让其专有格式将大量无用的数据泄漏到永远不会清除的磁盘上。这就像是一个非常讨厌的内存泄漏,它占用了磁盘而不是RAM。


电子表格的确是xlsx,还有一件奇怪的事:我无法将其另存为.xls文件。它一直在Excel 2k7中返回错误。我确实将副本另存为2003 xml电子表格,但我发现奇怪的是它列出了大量样式。这很奇怪,因为整个电子表格使用相同的字体并且没有特殊的格式。仍然不知道该如何告诉我的客户。
西蒙·霍瓦

2

另一个可能的解决方案是:

  1. 创建有问题的Excel文件的副本
  2. 打开那个副本
  3. 按CTRL + A,然后单击“清除”->“清除格式”
  4. 在每个工作表上重复步骤3
  5. 保存文件,然后尝试重新打开它

当格式设置过多时,尤其是当对许多单个单元格应用了许多不同的样式时,Excel在打开文件时真的很难尝试应用格式设置。

自然地,当您删除所有格式时,最终将在所有带有边框,阴影等的单元格中仅将具有默认样式的文本应用于该文本。但是通过这种方式,您可以查明问题的原因。


0

要大幅减小大小,您可以尝试使用.xlsb格式。应该减少比excel提供的任何其他基于XML的格式更多的内容。

打开其中一张电子表格,然后查看格式。寻找平常的东西。尝试将整个列复制到另一个excel电子表格并仅粘贴值(不格式化)。看看是否有帮助。


我尝试保存在xlsb中。尺寸完全没有减小。屏幕截图
西蒙·霍瓦

@Simon Hova您是否尝试将计算设置为手动并重新启动Excel?它可以是任何东西:公式,格式。您是否将数据列复制到另一个Excel电子表格以查看性能是否相同?只是数据;没有公式或格式。一次添加一个,看看问题出在哪里。
TwirlMandarin

这是另一个奇怪的事情,也就是没有计算,有没有正在运行的公式。仅有几行和几列,并带有一些次要的格式。我尝试逐行删除数据,但剩下的文件大小与以前差不多。仍然难住。
西蒙·霍瓦

0

就我而言,问题与“格式为表格”有关。该表有16000个空列。我猜这是出现这种问题的最常见原因之一。


0

在整个工作表中,我查看了所有条件格式设置规则,并且其中有很多负载。我仔细检查并清除了所有内容,然后创建了我真正需要的内容,现在确实非常快。还摆脱了我不需要的所有“连接”,并在一切正常运行后另存为.xlsb,现在它甚至更快了:o)


这会在其他答案中重复信息,因此感觉像“谢谢”评论。
bertieb
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.