1

这是我在安装 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”类型的 COM 对象转换为接口类型“Microsoft.Office.Interop.Excel.Application”。此操作失败,因为 IID 为“{000208D5-0000-0000-C000-000000000046}”的接口的 COM 组件上的 QueryInterface 调用因以下错误而失败:未注册接口(来自 HRESULT 的异常:0x80040155)。

4

2 回答 2

1

尝试以下步骤:

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

  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
    

更新

有时在 COM 选项卡以外的地方可以找到上述 DLL。要查找 INTEROP 引用(它们与 PIA 相同),您必须选择它们,如下所示:

EXCEL 互操作文件

这些文件要么与你的 Office 包相关,要么通过 PIA(取决于你的 Office 版本)。请参见此处:PIA 库

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

于 2017-05-30T22:56:06.520 回答
0

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

于 2017-06-01T09:56:24.890 回答