解決Excel的"有 XML 錯誤的 /xl/sharedStrings.xml"問題(修復EXCEL)


在關閉了辛辛苦苦編輯了一天的Excel 2007格式(.xlsx)文檔時,心中掠過一絲陰影,重新打開文檔,出現了下面的錯誤:

 
 
選擇“是”進行恢復,又出現了下面的錯誤提示,並且所有文字內容全部丟失了。
 

接下來試了一些方法,沒有成功,在網上搜索到了相似的案例,這可能還真是excel 2007的一個BUG,而且所有文章都沒有給出解決方法,看來文件恢復的希望是沒有了。
 
說說我都做了什么吧:
1)確認了自己使用的確實是.xlsx 文檔 格式,從網上搜索的結果看是Microsoft的專有格式
2)Excel提供的修復方法僅僅是其程序自帶的“內容恢復”
3)從網上查到了一篇文檔,介紹了.xlsx文檔的格式,知道了它其實是zip壓縮了的xml文件集合
4)解壓后查看 xl/sharedStrings.xml 文件內容,發現自己編寫的內容還在。
5)直接用瀏覽器打開 xl/sharedStrings.xml 發現了這樣的錯誤提示:
6)意識到可能是<si></si>匹配對有缺失,通過對xl/sharedStrings.xml文件中的<si>和</si>分別進行文本查找,發現2者的數量相差1,</si>少了一個。
7)通過正則表達式替換、過濾得到下面結果,找到了</si>缺失的位置:
8)到xl/sharedStrings.xml文件中,找到缺少</si>的<si>,手工補齊</si>。
9)用瀏覽器打開xl/sharedStrings.xml,不再提示錯誤。
10)把.xlsx的擴展名改為.zip,用Windows資源管理器打開,用修改后的xl/sharedStrings.xml替換舊文件,再把擴展名改回.xlsx。
11)再用excel 2007打開,所有數據恢復了。

---總結---
我遇到的這個錯誤的本質原因是xl/sharedStrings.xml文件中有不完整的<si></si>匹配對。其他朋友遇到相同的錯誤,不一定是與我相同的原因造成的。但找到問題原因的思路可以借鑒。希望這篇文檔能夠對大家有所幫助。

關於查找<si>和</si>配對的方法如下

關於樓主的第3)步,實際上需要先把原文件名由 *.xlsx改為*.zip,然后就可以看到 xl/sharedStrings.xml 文件了
關於樓主的第7)步,我是這么做的:
1 打開zip文件,找到sharedStrings.xml,雙擊打開(記事本),
2 將全部文本內容復制到Word中,
3 使用Word的查找替換功能,從第一行開始在所有的<si>和</si>前面添加回車符(替換<si>為^p<si>,替換</si>為^p</si>,注意從頭開始,並且不要重復替換),
4 將Word中的全部內容復制到Excel表格中(使用選擇性粘貼-文本),
5 現在每一個<si>和</si>都在單獨的一行上,看一看</si>的行號,是不是從某一個位置開始,</si>的行號從單號變成了雙號?恭喜你找到缺少</si>的行了!
6 根據上下文,找到記事本中的相應位置,補充缺少的</si>
OK !


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM