看来这个问题是一个非常流行的问题,我已经阅读了近十几个类似的问题,但都提供了相同的解决方案(安装并引用 DocumentFormat.OpenXml 2.5),我已经这样做了,但仍然没有工作。
我正在使用 Visual Studio 2012,在我的项目中引用 ClosedXML 版本 0.93 及其依赖项 DocumentFormat.OpenXML 版本 2.5。这两个 .dll 文件都存储在我的项目的 .exe 文件旁边。 Visual Studio 似乎看到了这些引用:
在我的代码顶部,我还有:
Imports DocumentFormat.OpenXml
Imports ClosedXML
但是,当我调用简单的测试代码时,
Dim workbook = New ClosedXML.Excel.XLWorkbook()
Dim worksheet = workbook.Worksheets.Add("Sample Sheet")
worksheet.Cell("A1").Value = "Hello World!"
workbook.SaveAs("HelloWorld.xlsx")
我收到错误消息:
发生了“System.IO.FileLoadException”类型的未处理异常 在 System.Windows.Forms.dll 中
附加信息:无法加载文件或程序集 'DocumentFormat.OpenXml,版本=2.7.2.0,文化=中性, PublicKeyToken=8fb06cb64d019a17' 或其依赖项之一。这 找到的程序集的清单定义与程序集不匹配 参考。 (HRESULT 异常:0x80131040)
我不知道为什么会出现这个错误。如果我写DocumentFormat.OpenXml。在我的代码中,我获得了该库中建议函数的列表,因此必须正确加载引用。
请问有人可以帮忙吗?
您是否注意到,在屏幕截图中,您在 OpenXml 程序集的引用中使用版本 2.5,但异常消息引用了较新的 2.7.2?这可能是你的问题。可能您引用了 2.5,但“ClosedXML”期待 2.7.2,当它找不到时会抛出错误?
我会得到 2.7.2,更新您的参考,然后看看是否有效。
您必须转到 nugget 并将文档 xml 引用更新为最新的 2.7,问题已修复
将 document.openxml dll 引用添加到您的项目中,您可以通过 nuget 包管理器获取此 dll(请安装所需版本的 dll)