【问题】
之前的C#代码,处理excel正常的,结果现在出错了:
An unhandled exception of type ‘System.InvalidCastException’ occurred in FiverrComScraper.exe Additional information: Unable to cast COM object of type ‘Microsoft.Office.Interop.Excel.ApplicationClass’ to interface type ‘Microsoft.Office.Interop.Excel._Application’. This operation failed because the QueryInterface call on the COM component for the interface with IID ‘{000208D5-0000-0000-C000-000000000046}’ failed due to the following error: Error loading type library/DLL. (Exception from HRESULT: 0x80029C4A (TYPE_E_CANTLOADLIBRARY)). |
如图:
相关代码:
public void dgvExportToExcel( DataGridView dgvValue, string excelFullFilename, bool isAutoFit = true, bool isHeaderBold = true, List<int> omitRowIdxList = null, List<int> omitColumnIdxList = null, List<int> useTagColumnIdxList = null) { Excel.Application xlApp = new Excel.Application(); Excel.Workbook xlWorkBook; Excel.Worksheet xlWorkSheet; object misValue = System.Reflection.Missing.Value; xlApp = new Excel.ApplicationClass(); xlWorkBook = xlApp.Workbooks.Add(misValue); xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
【解决过程】
1.参考:
和:
C#与excel互操作的错误无法将类型为“Microsoft.Office.Interop.Excel.ApplicationClass”的 COM 对象强制
都谈到的是,删除对应的注册表项,就可以了。
但是我此处觉得奇怪的是:
我的当前的win7,之前代码可以正常运行,
最后也没有重新安装office,为何会导致代码无法工作了?
难道是安装了其他的什么东西影响到了excel?
2.先不管,参考上面的,去注册表中看看。
先去导出,以便备份:
再去删除:
重新运行代码试试,就可以了:
【总结】
还是有点诡异,抽空再深究深层次原因。
暂时是把:
对应的注册表部分:
Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\TypeLib\{00020813-0000-0000-C000-000000000046}\1.7] "PrimaryInteropAssemblyName"="Microsoft.Office.Interop.Excel, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71E9BCE111E9429C" @="Microsoft Excel 14.0 Object Library" [HKEY_CLASSES_ROOT\TypeLib\{00020813-0000-0000-C000-000000000046}\1.7\0] [HKEY_CLASSES_ROOT\TypeLib\{00020813-0000-0000-C000-000000000046}\1.7\0\win32] @="C:\\Program Files (x86)\\Microsoft Office\\Office14\\EXCEL.EXE" [HKEY_CLASSES_ROOT\TypeLib\{00020813-0000-0000-C000-000000000046}\1.7\FLAGS] @="0" [HKEY_CLASSES_ROOT\TypeLib\{00020813-0000-0000-C000-000000000046}\1.7\HELPDIR] @="[{00020813-0000-0000-C000-000000000046}]"
删除掉,即可暂时解决此问题。
转载请注明:在路上 » 【已解决】C#程序excel处理出错:Additional information: Unable to cast COM object of type ‘Microsoft.Office.Interop.Excel.ApplicationClass’ to interface type ‘Microsoft.Office.Interop.Excel._Application’