分享

清除Excel自定义格式方法

 蓦然挥守 2020-08-01

  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>

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多