Excel文件增长巨大(> 150 MB)

有一个特定的Excel文件被我公司的许多员工使用。 它是从Excel 2003和2007中编辑的,打开“共享”function以允许一次写入多个作者。

这个文件在一些基本的格式上有几页数据,过去大概是6MB,这对于其内容来说似乎是合理的。 但经过几个星期的编辑,文件增长到10,然后20 MB,并最终猛增到超过150 MB,即使它仍然有大约相同数量的数据。 现在需要5-10分钟才能打开,而且要花费很多时间来保存它。

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

工作簿使用“数据validation”function将某些列中的值限制为几个命名范围的内容。 将所有数据复制到一个新的工作簿意味着重新设置所有的数据validation,这是一个痛苦,而不是我们每个月想要做的事情。

作为故障排除步骤,我尝试以“XML Spreadsheet 2003”格式保存文件,希望能够深入了解存储的内容。 果然,档案几乎是一场演出,几乎所有的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"/> 

我已经看到一些VBScripts联机pipe理和枚举隐藏在Excel的内置界面中的命名单元格,但我不知道他们将如何处理我的1000万个命名单元格。 但是,我真正需要的是了解这种情况继续发生的原因。 什么行动在Excel中可能造成这种情况?

更新:

这是我尝试的一个实验,提供了更多的细节:

  • 我关掉了分享; 该文件仍然巨大。
  • 我将该文件保存为.xlsx文件,并缩小到5MB。
  • 然后,我closures了该文件,将其重新打开,并将其另存为.xls文件,但共享仍处于closures状态。 它又变大了!
  • 当一个'03用户试图打开这个很好的,紧凑的.xlsx文件,它需要几分钟才能打开它,即使'07打开它很好。

所以,这似乎是一个'03特定的问题,以'03格式保存文件立即重新创build了一堆明显不在'07文件中的垃圾。

    跟我说:Excel不是数据库。

    你遇到了软件的devise限制:它只有很多的存储交易数据的能力,所以当多个人写信给它的时候,它必须存储一个frickton信息以便协调。 你有这么多的数据,交易副本是巨大的。

    微软假设(正确),如果你有这么多的数据,它存储在一个数据库,而你只是使用Excel作为前端。

    如果你要这样工作,至less应该敲一个Access数据库。 它会为你节省一个头痛的世界,因为它意味着像那样工作而Excel不是。

    @Josh:是的,它绝对是漏水的。 当你分享一个文件,它必须跟踪每个用户所做的修改…我将这个称为“交易数据”,但你可以把它想成历史。 由于没有“官方”版本,所以它始终保持跟踪变化,并且文件在一家甜甜圈店中比Kirstie Alley更快地膨胀起来。

    这是devise。 有人可能会告诉你如何使其停止,但最好的解决办法就是不要使用Excel来持续维护数据。 这不是真正的devise。

    我同情你的问题,但是向上级解释问题并制定新的程序是一个更好的解决办法,而不是试图延长不幸的黑客行为。

    @Josh:如果您只想缩小一次,暂时复制所有数据,并将其粘贴到新的电子表格中。 这将杀死所有的元数据,保证(确保你不select整个表格,但只有数据的部分)但这是一个临时的解决scheme充其量。

    看起来像是遇到了自定义视图问题。 看到:

    如何删除_#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

    为了快速临时解决问题,您可以closures共享并保存文件,看是否会丢弃额外的行李吗? 为了更好的解决scheme,你需要把它变成一个数据库。 如果您没有时间和专业知识来创build数据库,您是否看过Google的电子表格? 他们只是重写它,以更好的多用户同时编辑。

    您也可能想要从“文件”菜单中查看“另存为…”。

    Excel以及Word和其他Office成员可以将文件中的撤消历史logging保存一段时间。

    所以,做一个“另存为…”,select一个新的文件名,然后比较两个文件的大小。 如果新的缩小了,就像我所期望的那样,把它移回原来的那个,然后继续你的快乐。

    其他评论者是正确的,但是,当他们指出,Excel 不是一个数据库。 是的,它可以像一个一样工作,并且对于小数据集来说是很好的。 但是对于你所描述的,你需要迁移到一个新的解决scheme。

    附加信息:
    任何计算,所有格式化以及其他任何types的“使其执行此操作”都会增加存储开销。 如果这些types的东西与工作簿相关联,则1 MB表格将快速增长到100 MB。

    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. 从该行中select直到结束并删除所有行
    3. 对列执行相同的操作
    4. 保存并closures文件
    5. closuresMS Excel
    6. 重新打开文件

    这是否解决了这个问题?