如何解决Excel文件变大的问题

  • 发布时间:2016年9月21日 15:13
  • 作者:杨仕航
  • 分类标签: Excel
  • 阅读(23826)
  • 评论(1)

经常有些人找我说Excel文件变得很大,打开和保存操作都很慢,有时还提示内存不足等。这个问题要怎么解决?

Excel文件大通常就是图片多数据量大格式多导致的。

图片多和数据量大容易理解。为什么格式多也会导致文件变大?

由于格式不是可以直接想文字实实在在可以辨别存储量是多大的,所以很容易被忽略了。这个下面会详细说明。


既然文件变大了,要怎么解决呢,一个一个来:

1)数据量大,基本是无解的。

若没设置什么格式,单纯只是数据,10几M的文件可以保存上十万行的数据。这个一般可以通过拆分文件处理或者删除无用的数据。

2)图片多,这个也容易解决。

图片多也包含各种对象多。删除图片,或者重新换小图。

3)格式多就清除格式。

格式多是指应用不同格式的单元格多(单元格多不等于数据量大)。这个需要选择单元格,再用菜单“开始”-->“编辑”-->“清除”-->“清除格式”即可。

这个格式多影响很大。我一般建议不要用太多格式。但很多新手很喜欢用各种各样的格式标记东西。

处理方法有了,但如何辨别是哪些情况呢?辨别清除是哪些情况才好对症下药。

整理了一套处理方法,如下:


1、若是xls文件,先另存为xlsx

xls格式的文件是纯粹的二进制文件,而xlsx格式的Excel文件是基于xml的。另存为xlsx之后,就可以用于下面的解压步骤。有时候甚至另存为xlsx之后,文件就变小了。


2、复制一份,再把文件名后缀xlsx改成zip,解压缩

看不到文件后缀的,先改一下系统设置,把文件后缀名显示出来。

改成zip之后,就可以解压缩。解压之后,出现如下的文档结构:


可能还有其他文件或文件夹,不过那些无关紧要。主要看这些文件夹或文件:

1)xl目录中的drawings文件夹。里面有个xml文件,该文件是记录原Excel文件中的形状信息。

2)xl目录中的media文件夹。若原Excel文件有图片、视频等媒体文件,就会出现该文件夹。

3)xl目录中的worksheets文件夹。该文件夹里面都记录原文件中的工作表信息。单元格的值和格式都在里面。

4)xl目录中的sytles.xml文件。该文件自然是记录该Excel文件的样式信息。


3、再挨个排查看哪些文件占用的空间比较大

1)drawings文件夹大,说明里面的形状太多。

可以打开原Excel文件,按Ctrl+G定位所有对象,再摁Delete删除。


那个网络流传的“电脑嘲笑找不到对象”的梗也是在这里出现的。


2)media文件夹大,说明里面的图片或其他媒体文件太多了。

同样可以用上面的方法定位对象,删除。

也可以用PS弄个批处理,批量把图片的尺寸改小(不要问我PS是什么)再覆盖回来。

覆盖回来之后,可以把解压出来的文件重新压缩为zip。把zip后缀改成xlsx又是一个Excel文件了。


3)styles.xml文件大,说明样式多。

其实这个文件也大不到哪里去,我只是想顺便提一下如何批量清除样式。

批量清除样式,可以利用vba代码。

打开原Excel文件,Alt + F11 快捷键打开vba界面。右键工程资源管理器,插入新模块。

看不到这个工程资源管理器?点击菜单“视图”-->“工程资源管理器”。

在新建的模块写入代码:

Public Sub ClearSytles()
    On Error Resume Next
    Dim sty As Style
    For Each sty In ActiveWorkbook.Styles
        sty.Delete
    Next
End Sub

接着,点击上面的运行图标按钮执行这个宏即可。


用完这个模块之后,可以删除这个模块,不必保存代码(保存文件会提示是否继续,点是即可)。


4)workbooks文件夹里面的sheet.xml文件大。

通常这个就是具体的工作表了。每个xml就对应一个工作表,可以看出哪个文件比较大。

拿我一个朋友发给我的文件举例,TA的worksheets文件夹如下:

很明显有3个工作表比较大:Sheet2、Sheet11和Sheet13。

打开TA的Excel文件,发现只有5个表,而且名字对不上。这种情况说明表格被隐藏了,右键工作表标签取消隐藏。

至于名字对不上也是正常的,按Alt + F11。看vba界面的工程资源管理器。

很明显可以看出刚刚那3个比较大的工作表对应的表格。

再打开对应的表,全选内容(Ctrl + A),清除格式。保存之后,发现19M的文件变成400多k。

为什么差距这么大呢?而且那3个表中有两个表的数据确实不多,才100多行。


因为格式的信息量要比单元格值的信息要记录多得多。格式包括字体、背景、边框、单元格大小等等很多信息。

若格式设置得越多,需要记录的信息就越多,从而导致文件越大。

如果再加上数据量大,且应用不同格式的单元格多的话,这个文件占用空间就变得很大。

所以,少用格式。

上一篇:vb/vba颜色和RGB颜色互转

下一篇:我的网站搭建(第31天) 优化登录和注册页面

评论列表

智慧如你,不想发表一下意见吗?

新的评论

清空