Microsoft.Office.Interop.Excel初始化失败(Office 2016)

这是我在Office 2016安装之前使用的代码。

var excelApp = new Excel.Application(); excelApp.Visible = true; Excel.Workbook excelWorkbook = excelApp.Workbooks.Open(finfo.FullName, 0, true, 5, "", "", true, Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, false, false); Excel.Sheets excelSheets = excelWorkbook.Worksheets; Excel.Worksheet excelWorksheet = (Excel.Worksheet)excelSheets.get_Item(currentSheet); var cellValue =(excelWorksheet.Cells[a, b] as Excel.Range).Value; 

代码工作正常,但Office 2016安装后,我看到,我不能使用using Excel = Microsoft.Office.Interop.Excel;

唯一兼容的库,我发现是

Microsoft.Office.Core(Microsoft Office 16.0对象库)

我找不到任何访问Excel文件的例子。 是否有任何其他方式来访问安装Office 2016的Excel文件(PIA)

这是我尝试运行代码时得到的错误

无法将“System .__ ComObject”types的COM对象转换为接口types“Microsoft.Office.Interop.Excel.Application”。 此操作失败,因为IID为“{000208D5-0000-0000-C000-000000000046}”的接口的COM组件上的QueryInterface调用由于以下错误而失败:接口未注册(exception来自HRESULT:0x80040155)。

试试这些步骤:

  1. 请参考“Microsoft Office 16.0 Object Library”(您可能会看到2.5.0.0版)和“Microsoft Office Interop Excel”(您可能会看到15.0.0版),这是在VS中的ASSEMBLIES EXTENSIONS中find的。

  2. 做一个“使用”与“System.Runtime.InteropServices”和(我猜)“System.Reflection”在例程/模块的顶部。

  3. 我会尝试从VB.NET转换到你:

     Object ExcelObject = null; Microsoft.Office.Interop.Excel.Application ExcelApp = null; Try ExcelApp = new Microsoft.Office.Interop.Excel.Application; ' and so forth like your code... Catch End Try 

UPDATE

有时上面提到的DLL在COM选项卡中找不到。 要findINTEROP参考(它们与PIA相同),您必须按如下所示select它们:

EXCEL Interop文件

这些文件要么与您的Office软件包相关,要么通过PIA(这取决于您的Office版本)。 见这里: PIA图书馆

如果您没有看到如上所述的DLL,请在您的计算机中下载并安装PIA。

问题出在一个完全不同的领域。 这个问题与registry有关。 我完全删除了与Office安装有关的所有registry项,并重新安装了Office 2016.解决了这个问题。 感谢您的答案。