Microsoft.Office.Interop.Excel.ApplicationClass没有定义构造函数。

22

我试图按照如何在C#中打开Excel文件教程的步骤进行操作,即在“Com”选项卡上添加对Microsoft Office 14.0 Object Library的引用,并尝试编译代码:

using Excel = Microsoft.Office.Interop.Excel;
//...
Excel.Application xlApp;
Excel.Workbook xlWorkBook;
Excel.Worksheet xlWorkSheet;

xlApp = new Excel.ApplicationClass();//error here
//...

我遇到了一个编译时错误:

Microsoft.Office.Interop.Excel.ApplicationClass 类型没有定义构造函数。

我缺少了什么?

3个回答

39

试一下这个:

Excel._Application xlApp = new Excel.Application();

好的,Office 14 + VS 2010 可以使用 .NET 3.5 和 ApplicationClass。现在使用 VS 2012,只有 Office 14 能够被识别,需要使用 .NET 4,我遇到了你之前遇到的同样的错误。 - Pedro77

3
如果您正在使用C# 4.0 (.NET 4),那么您可以选择更简便的语法。
var app = new Application( );

var workbook = app.Workbooks.Open("test.xls");

关于var:它可以让你的工作更加轻松,因为C#会决定选择哪种类型并进行操作。
如果感兴趣,你可以了解一下dynamicvar样式
请记住,在C# 4.0之前的互操作性是完全不同的现象,以及C#如何处理Microsoft对象。
只是提醒一下,这是在C# 4.0之前与Word文档交互的编码方式。
object fileName = @"WordFile.docx";
object missing = System.Reflection.Missing.Value;
object readOnly = true;
var doc = wordApp.Documents.Open(ref fileName, ref missing, ref readOnly,
ref missing, ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing);

1
在这里很好地解释了为什么要使用 Application() 而不是 **ApplicationClass()**,请参见以下链接:link - Mehrad

3

刚刚添加了对文档的引用。我没有尝试过类似于你尝试的方法,所以不确定它是否有效,但我刚刚检查了一个最近编写的VB.NET项目,它可以工作,并且这就是我采取的方式。 - PeterJ
+1:Vlad Spreys 给了我需要的答案。不过还是谢谢你。 - horgh
没问题,其实我也给他的答案点了赞,这可能是一种更干净的方法,即使这种方法也可以工作。 - PeterJ
也许我会在某个时候检查你的建议 :) - horgh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接