【问题】
之前的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’
