Excel2016版已经修复了复制工作表会复制无关样式。
一、问题
Excel体积大,原因是定义了许多无用的样式,样式表位于styles.xml。将一个Excel文件复制到另一个文件,会把所有无关的样式全部复制,导致文件体积越来越大。
新建一个Excel,复制表格时不要采用复制或移动,而且点击左上角全选。点击左上角复制后一般格式完全相同,但是冻结状态和筛选状态就消失。
二、解决办法
办法1
1、打开VBA编辑器(alt+f11),在代码窗口中输入下列代码:
Sub DelCustomStyles()
Dim st As Style
For Each st In ActiveWorkbook.Styles
If Not st.BuiltIn Then st.Delete
Next
End Sub
2、关闭VBA编辑器,返回Excel界面。打开“宏”对话框(alt+f8),执行“DelCustomStyles”宏即可一次删除所有自定义单元格样式,而内置的单元格样式会保留。
办法2:删除styles.xml,但是所有格式都会清除。需要重新设置格式
1. 重命名.xlsx为.zip
2. 用WinZip打开,进入xl 文件夹
3. 右键点击styles.xml,选择用记事本打开
4. 查找<cellstyles,删除条目
5. 再次搜索/cellstyles>
6. 保存xml。更新Zip文件,保存。
7. 重命名zip文件为.xlsx
三、styles.xml文件
excel 2007中的/xl/styles.xml文件,"cellStyleXfs"和"cellStyles"节点
CellStyleXfs是在单元格样式中建立的自定义样式。
<cellStyleXfs count="3XXX">
<xf numFmtId="0" fontId="0" fillId="0" borderId="0"/>
<xf numFmtId="0" fontId="1" fillId="0" borderId="0">
</xf>
<xf numFmtId="0" fontId="1" fillId="0" borderId="0">
</xf>
</cellStyleXfs>
样式名可以在"cellStyle"节点的"name"属性找到,对应的属性"xfId",是"CellStyleXfs"节点的子节点"xf"的索引,从"0"开始
<cellStyles count="3XXXX">
<cellStyle name="MyStyle" xfId="1"/>
<cellStyle name="常规" xfId="0" builtinId="0"/>
<cellStyle name="样式 1" xfId="2"/>
</cellStyles>
联系客服