最近工作总遇到个问题,Excel文件内容很少,但文件很大,打开很慢。之前也遇到过,参见《Excel文件内容很少,但文件很大,打开很慢、很卡怎么办?》进行处理,但发现Excel文件内根本就没有隐藏的对象,按之前的教程无法处理。打开界面如下:
经解压Excel文件,发现表里的xml文件有很多的重复元素,protectedRanges,如下图所示:
这些主要是表的可编辑区域,我的Excel文档根本没设置允许编辑区域,猜测可能是操作时从其它具允许编辑区域的Excel文档复制粘贴过来造成的(后来发现应该是wps造成的,wps复制粘贴多次,可编辑区域生成很多,奇怪的是wps打开速度还能忍受,但微软Excel打开就巨卡)。
理论上把这些允许编辑区域进行删除就可以了。但由于微软Office Excel的允许编辑区域只能逐条删除,wps的也是只能逐条删除。于是通过解压Excel文件,再删除表xml中的protectedRanges元素,重新压缩为zip,再把zip扩展名改为xlsx,就可以搞定了。
为了方便,写个php程序进行删除,效果相当不错,处理结果截图如下:
PHP源码如下: