错误 -1072896636 "DTD Prohibited" 在Excel中打开xml文件时,我该怎么办?



我试图在Excel 2013中打开XML文件,但它说它不能这样做,因为"DTD禁止"。我一直在寻找解决方案,但我所找到的只是一些应该能解决问题的代码。

但是我一点也不明白!什么代码?我只是打开文件,不是写程序什么的。我应该在打开文件之前大声地背诵这些代码吗?对不起,但我觉得这真的很荒谬。

是否有一些解决方案只是打开文件,而不为它编写程序?如果不是,我该如何处理这段代码?

我说的代码是下面的

Set xmlDoc = CreateObject("Msxml2.DOMDocument.6.0")
xmlDoc.setProperty "ProhibitDTD",False
xmlDoc.load xmltoload.xml

我发现这个文件可能应该在Word中打开,而不是Excel,但是Word 2013给了我同样的错误。

答:
看起来这个文件应该是用Excel打开的。我在互联网上发现Office 2007及更早版本不禁止DTD,不管那是什么。因此,我通过在Excel 2003中打开所需的文件成功地绕过了这个问题。

解决方法非常简单。在文本编辑器中打开XML文件,并删除引用DTD位置的行。

Excel将根据您的XML文件创建一个XML模式。

所有XML文档都依赖于允许存在哪些字段以及允许在每个字段中存在哪些值的定义。这些是通过链接到文档类型定义("DTD")或XML模式文件在每个XML文件中定义的。

我的理解是Excel 2007及更高版本不支持DTD。相反,他们希望您的XML文件引用XML Schema。

所以,你的潜在问题是你的XML文件引用了一个DTD文件,而你需要将你的DTD文件转换成一个XML Schema文件(你可以通过使用notepad++这样的程序打开文档并查看原始文本来验证这一点)

有很多工具可以帮助你做到这一点,但是,坦率地说,我已经试着让他们都工作了几个小时,但仍然没有Excel打开我的XML(在这篇文章中搜索相同的错误代码)。

如果你只是想一次性打开一个XML文件,你可能不想花那么多精力——但是如果我找到一个快速简单的解决方案,我会更新的。

如果你只需要打开它,你可以下载一个免费的程序,将XML转换为CSV:

http://xmltocsv.codeplex.com/

我试过了,它工作得很好——我的文件立即在Excel 2013中打开。问题解决了。

当然,XML的关键在于数据可以与具有上下文的其他数据相关联,如果没有适当的模式或DTD文件,这些数据就会丢失。但是如果你只是想打开文件,这应该可以工作了(对于那些还没有Excel 2003的人来说,尽管我想这对你来说也很容易)

最近,我在与Office365帐户相关的Excel ClickOnce版本中看到这个错误重新出现。它不影响通过CD/ISO分发的Excel版本。您可以通过版本号来区分两者之间的区别。

转到文件|帐户|点击"关于Excel"按钮

  • 16.0.4456.1003 - cd/iso
  • 16.0.571.7063 - ClickOnce

当XML文件没有DTD 没有XML Schema文件时触发该错误。在尝试刷新数据连接时,会得到DTD错误。如果实际编辑XML查询,则数据确实会更新。我怀疑这是一个bug

最新更新