在使用excel过程中,很悲剧的会出现“不同单元格式太多”的提示,或者编辑完的文档在下次打开时提示“发现无法读取的内容……”提示修复但是修复后之前的文档格式全部不见了。
对于以上两种悲剧的情况,网上有很多解决办法,但是试过都不太给力。
曾经也是因此悲剧了很多次,同事出现这个问题的时候也帮不上什么忙,于是潜心研究一下这个问题的根本原因;
首先说下对于“不同单元格式太多”的解决方案:
1.在excel文档中按 alt+f11 快捷键打开VBA编辑器
随便打开左侧列表中的一个,会出现VBA代码编辑界面,复制下列代码进入。
Sub DelStyls()
Dim s As Style
Application.ScreenUpdating = False
For Each s In ThisWorkbook.Styles
If Not s.BuiltIn Then s.Delete
Next
Application.ScreenUpdating = True
End Sub
Sub X()
Dim s As Style
Dim e
For Each s In ActiveWorkbook.Styles
'MsgBox https://www.wendangku.net/doc/f31508834.html,
On Error Resume Next
If Len(https://www.wendangku.net/doc/f31508834.html,) > 0 And https://www.wendangku.net/doc/f31508834.html, <> "Normal" Then
s.Delete
End If
If Err.Number > 0 Then
e = "Error occour on deleting Style named " & https://www.wendangku.net/doc/f31508834.html,
e = e & vbCrLf & "Err:" & Err.Number & "->" & Err.Description
MsgBox e
Err.Clear
End If
Next
End Sub
复制过不用保存,转到excel文档界面,在最左上角会有“查看宏”按钮,如果没有就在excel选项-->自定义-->常用命令 里面找到查看宏命令添加即可。
打开宏查看器后会看到两个宏,一个叫DelStyls 一个叫X,通常情况下双击DelStyls运行即可,但是这个宏运行的很慢要等很长时间。
以上这个就是网络上大神提供的代码,实验过十分有效。
2等下再说。
至于保存文档后打开时提示 有无法读取的内容 时,如果文档格式不是很重要就直接让excel自己修复好了,一般数据不会丢失只是格式全没了。
这种情况网上提供较多的方法,但是不一定都有用,我试过的基本都没有帮助- -。
对此下面提供一个比较蛋疼的处理方法。
将文档的后缀名改为.zip 即压缩包格式
双击改名后的文件,解压软件会显示一个目录结构出来。
在里面找到 xl 这个文件夹,双击进入
打开 styles.xml 这个文件,注意如果是编程人员直接双击打开应该是编辑器中,否则要右键用记事本打开,总之比用ie等浏览器打开就行,因为要编辑的。
打开可能会很慢,应为那是一个巨大的字符串,电脑处理起来很慢。
打开后如果看着不爽或者编辑器实在太满了,那么就整理一下格式。
替换 为 换行+制表符 +
替换
替换
制表符 +
替换
替换
替换之后文档处理起来会快很多 ,同时看着也舒服很多。
接下来说明一下xml标签的大概意思:
font: 字体信息 ,在
fill :表格填充信息,在
border:边框信息,在
xf :单元格样式信息,
在
在
cellStyle:单元格样式,在
这里的数量与
基本有用的就是这几个东西。
一.处理单元格样式过多的问题时,直接将
修改后样式如下:
注意里面的值最好全都用0,修改后保存,压缩软件会提示重新进行压缩,同意即可。
之后将文件名后缀改回为xlsx/xls即可。用excle打开看看效果。
二.出现无法读取数据内容的问题
这个问题比较麻烦,有时候可以直接按照上面的方法吧所有的样式信息干掉就好了。
但是有时候不会,造成错误的原因是:
在
numFmtId 一般不用管他,不会在这出错
fontId 他的值范围为 0 ---
fillId 他的值范围为 0 ---
borderId 他的值范围为 0 ---
xfId 进过测试貌似这个值是多少都不会出错。
逐一检查
范围内,也可以增加上面的样式定义数量。
之后再检查
最后可以将没有引用到的样式直接删除。
这样操作会有一些风险性,操作前先做好备份。
写完了。空间的编辑器真心不好用,格式乱的1b啊。
以前觉得excel很是强大,不够它也为用户做了很多没有必要的事情,比如复制内容时就会把大量的单元格样式复制过去,而且这些都没什么用。把那些样式都删了 可以减少大概7M的大小。
以下是一个刚刚创建的空的excel中style.xml的内容:
这个东西只看了几个小时,说的不对的地方不要见笑,还望高人指点。这么做也是被excel逼的啊。。。。。。。。。。。。。。。。