解決Excel 2007的"有 XML 錯誤的 /xl/sharedStrings.xml"問題


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

200906181245295992618.png

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

200906181245296000710.png


接下來試了一些方法,沒有成功,在網上搜索到了相似的案例,這可能還真是excel 2007的一個BUG,而且所有文章都沒有給出解決方法,看來文件恢復的希望是沒有了。

說說我都做了什麼吧:

1)確認了自己使用的確實是.xlsx文檔格式,從網上搜索的結果看是Microsoft的專有格式

2)Excel提供的修復方法僅僅是其程序自帶的“內容恢復”

3)從網上查到了一篇文檔,介紹了.xlsx文檔的格式,知道了它其實是zip壓縮了的xml文件集合

4)解壓後查看 xl/sharedStrings.xml 文件內容,發現自己編寫的內容還在。

5)直接用瀏覽器打開 xl/sharedStrings.xml 發現了這樣的錯誤提示:

200906181245296403134.png

6)意識到可能是<si></si>匹配對有缺失,通過對xl/sharedStrings.xml文件中的<si>和</si>分別進行文本查找,發現2者的數量相差1,</si>少了一個。

7)通過正則表達式替換、過濾得到下面結果,找到了</si>缺失的位置:

200906181245296544766.png

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>匹配對。其他朋友遇到相同的錯誤,不一定是與我相同的原因造成的。但找到問題原因的思路可以借鑑。希望這篇文檔能夠對大家有所幫助。



附:我現在改用openOffice編輯重要文檔。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章