Excel 文件变得非常大(>150 MB)

Excel 文件变得非常大(>150 MB)

我公司有一个特定的 Excel 文件,供许多员工使用。它是使用 Excel 2003 和 2007 编辑的,并启用了“共享”功能,允许多个员工同时编写。

该文件包含几张纸,包含大量数据,并带有一些基本格式,以前大约 6MB,对于其内容来说,这个大小似乎合理。但经过几周的编辑,文件大小增长到 10MB,然后是 20MB,最终飙升至 150MB 以上,尽管它的数据量与以前大致相同。现在打开它需要 5-10 分钟,保存它又需要同样多的时间。

第一次发生这种情况时,我将每张工作表的内容复制到一个新的空白工作簿中,然后保存了新工作簿;这使它的大小又降到了 6MB 左右。现在,它又爆炸了。

工作簿使用“数据验证”功能将某些列中的值限制为几个指定范围的内容。将所有数据复制到新工作簿意味着重新设置所有数据验证,这很麻烦,我们不想每个月都这样做。

作为故障排除步骤,我尝试以“XML 电子表格 2003”格式保存文件,希望了解存储的内容。果然,文件几乎有 1GB,几乎所有 1000 万行都如下所示:

<NamedCell ss:Name="Z_21D5114F_E50C_46AC_AA4F_C3FF540C717F_.wvu.FilterData"/>
<NamedCell ss:Name="Z_1EE2BA5E_3011_4F9A_8ACD_E58835250FC4_.wvu.FilterData"/>
<NamedCell ss:Name="Z_1E3BDCEA_6A72_4ECC_BF4F_7B03CC66181E_.wvu.FilterData"/>

我在网上看到过一些 VBScript 来管理和枚举隐藏在 Excel 内置界面中的命名单元格,但我不知道它们会如何处理我的1000 万个命名细胞。但我真正需要的是了解为什么这种情况会持续发生。 Excel 中的哪些操作可能导致这种情况?

更新:

以下是我尝试过的一个实验,它提供了更多细节:

  • 我关闭了共享;文件仍然很大。
  • 我将该文件保存为 .xlsx 文件,其大小缩小至 5MB。
  • 然后我关闭了该文件,重新打开它,并将其保存为 .xls 文件,共享仍然关闭;它又变得很大!
  • 当 '03 用户尝试打开那个简洁、紧凑的 .xlsx 文件时,需要花几分钟才能打开它,尽管 '07 可以正常打开它。

因此,这似乎是 '03 特有的问题,并且以 '03 格式保存文件会立即重新创建一堆垃圾,而这些垃圾显然根本不存在于 '07 文件中。

答案1

跟我一起说:Excel 不是数据库。

您遇到了软件的设计限制:它存储事务数据的能力有限,因此当多个人写入时,它必须存储大量信息才能进行协调。您拥有如此多的数据,以至于事务副本非常庞大。

微软(正确地)假设如果您有那么多数据,它会存储在数据库中,而您只是使用 Excel 作为前端。

如果你打算这样工作,你至少应该弄一个小型 Access 数据库。它将为你省去很多麻烦,因为它本来就是那样工作的,而 Excel 却不是。

@Josh:是的,它确实在泄漏。当您共享文档时,它必须跟踪每个用户所做的修改...我将其称为“事务数据”,但您可以将其视为历史记录。由于从来没有“官方”版本,它会不断跟踪更改,文档膨胀的速度比甜甜圈店里的 Kirstie Alley 还快。

这是设计使然。Excel 专家可能会告诉你如何停止这种情况,但最好的解决方案就是不要使用 Excel 来处理需要不断维护的数据。这实际上并不是它的设计目的。

我对你遇到的问题深表同情,但向上级解释问题并制定新的程序,比试图延长不幸的黑客攻击是一个更好的解决方案。

@Josh:如果您只想暂时缩小一次,请复制所有数据,然后将其粘贴到新电子表格中。这肯定会删除所有元数据(确保您没有选择整个工作表,而只选择其中包含数据的部分)但这充其量只是一种临时解决方案。

答案2

看起来您遇到了自定义视图问题。请参阅:

我如何删除 _#wvu#FilterData 内容?
http://www.tech-archive.net/Archive/Excel/microsoft.public.excel/2006-12/msg00704.html

如何禁用自定义视图?(滚动)
http://www.eggheadcafe.com/software/aspnet/30197438/how-do-i-disable-custom-v.aspx

答案3

为了快速临时修复,您可以关闭共享并保存文件,看看它是否能清除多余的负担?为了获得更好的解决方案,您需要将其转换为数据库。如果您没有时间和专业知识来创建数据库,您是否看过 Google 的电子表格?他们只是重写了它,以便更好地进行多用户同时编辑。

答案4

http://answers.microsoft.com/en-us/office/forum/office_2007-excel/why-do-my-excel-files-become-huge/8235dc08-aa70-4a65-9892-b776790d79c5

尝试这个

  1. 找到最后填充的数据行,然后单击该行下方的任意一行中的单元格
  2. 从该行选择到末尾并删除所有行
  3. 对列执行相同操作
  4. 保存并关闭文件
  5. 关闭 MS Excel
  6. 重新打开文件

这能解决问题吗?

相关内容