Excel2016版已經修復了複製工作表會複製無關樣式。
一、問題
Excel體積大,原因是定義了許多無用的樣式,樣式表位於styles.xml。將一個Excel文件複製到另一個文件,會把所有無關的樣式全部複製,導致文件體積越來越大。
新建一個Excel,複製表格時不要採用複製或移動,而且點擊左上角全選。點擊左上角複製後一般格式完全相同,但是凍結狀態和篩選狀態就消失。
二、解決辦法
辦法1
1. 重命名.xlsx為.zip
2. 用WinZip打開,進入xl 文件夾
3. 右鍵點擊styles.xml,選擇用記事本打開
4. 查找<cellstyles,刪除條目
5. 再次搜索/cellstyles>
6. 保存xml。更新Zip文件,保存。
7. 重命名zip文件為.xlsx
辦法2
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」宏即可一次刪除所有自定義單元格樣式,而內置的單元格樣式會保留。
在我的電腦上面,Excel無響應,無法實現
辦法3:刪除styles.xml,但是所有格式都會清除。需要重新設置格式
三、xlsx文件結構
在文件夾「_rels」中,包含名為「workbook.xml.rels」的文件
xl文件夾
rels:其中的關係文件workbook.xml.rels定義了工作簿、數據和格式部件的關係。
activeX:包含控制項設置的XML文件。
charts:包含圖表設置的XML文件。
chartsheets:包含工作簿中每個圖表數據的XML文件。
diagrams:描述工作簿中形狀(SmartArt)的XML文件。
media:包含內嵌的媒體文件,例如GIF、JPG等。
tables:包含帶有每個表的數據的XML文件。
theme:包含工作簿主題的數據的XML文件。
worksheets:包含工作簿中每個工作表的XML文件。
除一些文件夾外,還有一些單獨的XML文件。例如:workbook.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>