我有 100 多个已损坏的工作簿 - 当试图打开它们时,Excel 会抛出一条错误消息,指出“x”是一个未声明的前缀。这些文件无法在 xml 查看器(包括 OpenXML 之一)中加载。现在,如果我将 Excel 工作簿的扩展名更改为 .zip,解压缩所有部分,在 workbook.xml 文件中编辑以下行(这是 xml 文档中的最后一个元素)
<extLst><x:ext uri="{140A7094-0E35-4892-8432-C4D2E57EDEB5}" xmlns:x15="http://schemas.microsoft.com/office/spreadsheetml/2010/11/main"><x15:workbookPr chartTrackingRefBase="1"/></x:ext></extLst>
通过删除整个元素或删除标签x:
中的 ,<ext>
然后我将其打包备份后工作簿将正常运行。
我还尝试了以下 VB.Net 代码:
Private Sub RemoveExceptionsFromWorkbook(ByVal workbookPath As String)
Using excelDoc As SpreadsheetDocument = SpreadsheetDocument.Open(workbookPath, True)
If excelDoc.WorkbookPart.Workbook.Descendants(Of WorkbookExtensionList)().Any() Then
excelDoc.WorkbookPart.Workbook.RemoveAllChildren(Of WorkbookExtensionList)()
excelDoc.WorkbookPart.Workbook.Save()
End If
End Using
End Sub
但是我每次都得到'x'是一个未声明的前缀错误。有谁知道如何解决这一问题?任何帮助将不胜感激。