C# -Excel 互操作性

Posted

技术标签:

【中文标题】C# -Excel 互操作性【英文标题】:C# -Excel interoperability 【发布时间】:2010-12-27 17:29:08 【问题描述】:

我想从 C# 4.0 (VS 2010 Express Edition) 调用 Excel Sheet。

当我声明时,

Microsoft.Office.Interop.Excel.ApplicationClass excel =
    new Microsoft.Office.Interop.Excel.ApplicationClass();

excel.Visible = true;

我收到错误

无法嵌入互操作类型“Microsoft.Office.Interop.Excel.ApplicationClass”。请改用适用的接口。

什么是灵魂?

【问题讨论】:

【参考方案1】:

Here 是一篇处理该问题的博文。看起来你需要改变

Microsoft.Office.Interop.Excel.ApplicationClass();

Microsoft.Office.Interop.Excel.Application();

【讨论】:

【参考方案2】:

对我来说,答案是将 Embed Interop 类型标记为 false。请参阅this 问题。

【讨论】:

【参考方案3】:

已解决:

Excel.ApplicationClass 派生自Excel.Application 接口,甚至可以使用Excel.Application 接口实例化Excel。 如下重写此代码会产生完全相同的结果:

Excel.Application xlapp = new Excel.Application();

【讨论】:

【参考方案4】:

您需要将变量声明为Microsoft.Office.Interop.Excel.Application,但将其实例化为Microsoft.Office.Interop.Excel.ApplicationClass

【讨论】:

【参考方案5】:
Excel.Application = new Excel.ApplicationClass();

注意前导Excel.Application,而不是Excel.ApplicationClass

另请注意,这直接来自MSDN page for ApplicationClass。

【讨论】:

【参考方案6】:

MS Office 2016 需要使用以下无剧集

Excel.Application oExcel = new Excel.Application();

【讨论】:

以上是关于C# -Excel 互操作性的主要内容,如果未能解决你的问题,请参考以下文章

通过互操作将字符串数组从 C# 传递到 C++

C# 和 C++ 互操作

如何在 C# 互操作中使用 InternetQueryOption?

将 C# 函数指针传递到 C++/CLI 互操作 dll

与 php 和 java 互操作的 C# dll

如何在 C# 和 C++ 之间进行互操作