【发布时间】:2018-10-17 00:35:04
【问题描述】:
我正在开发一个需要从 Excel 导入数据的应用程序。
我的解决方案是使用Microsoft.office.Interop.Excel.
但我在调试时收到此错误:
Message=无法转换 COM 类型的对象 'Microsoft.Office.Interop.Excel.ApplicationClass' 到接口类型 'Microsoft.Office.Interop.Excel._Application'。此操作失败 因为接口的 COM 组件上的 QueryInterface 调用 使用 IID '{000208D5-0000-0000-C000-000000000046}' 失败,因为 以下错误:加载类型库/DLL 时出错。 (例外来自 HRESULT: 0x80029C4A (TYPE_E_CANTLOADLIBRARY))
下面是我的代码:
Imports Excel = Microsoft.office.Interop.Excel
Private Sub BExcel1_Click(sender As Object, e As EventArgs) Handles BExcel1.Click
OpenFileDialog1.Filter = "Excel Files|*.xlsx; *.xls; *.xlsm"
If (OpenFileDialog1.ShowDialog() = DialogResult.OK) Then
ExcelPath1.Text = OpenFileDialog1.FileName
End If
Dim XlApp As New Excel.Application
Dim XlWorkBook As Excel.Workbook
Dim XlWorkSheet As Excel.Worksheet
XlWorkBook = XlApp.Workbooks.Open(ExcelPath1.Text)
End Sub
我用谷歌搜索了一些解决方案(如下),但没有成功:
- Office我已经修好了
- 我已经修复了 Visual Studio
- 我用注册表编辑器查看了
Computer\HKEY_CLASSES_ROOT\TypeLib\,但是在00020813-0000-0000-C000-000000000046下,我只有一个1.9版本,好像不是两个版本之间的冲突?
有什么办法可以解决这个问题吗?
VS version:2017 community
Excel version:2016
Microsoft.Office.Interop.Excel version:15.0.0.0
【问题讨论】:
-
修复office不行,重新安装。在执行此操作之前运行 chkdsk.exe 以验证磁盘驱动器是否仍处于正常状态。
-
Excel 2016 应该显示版本 16.#,而不是 15,即 Office 2013。您在哪里看到这些冲突的版本号?
-
@Cindy Microsoft.Office.Interop.Excel 的版本来自 Visual Studio 属性管理器的参考属性。它显示 15.0.0.0。而Computer\HKEY_CLASSES_ROOT\TypeLib\下的key 00020813-0000-0000-C000-000000000046,只有子key 1.9 (Computer\HKEY_CLASSES_ROOT\WOW6432Node\TypeLib\{00020813-0000-0000-C000-000000000000) ,在默认标记下:数据:Microsoft Excel 16.0 对象库)。我没有看到任何冲突的版本号,所以我很困惑。
-
您的机器上安装了哪个版本的 Excel?
-
@Cindy Office 2016 标准。
标签: excel vb.net office-interop