2012-12-24 7 views
21

Ich versuchte How to open an Excel file in C# Tutorial zu folgen, dh eine Referenz auf die Com Registerkarte Microsoft Office 14.0 Object Library hinzugefügt und versucht, Code zu kompilieren:Microsoft.Office.Interop.Excel.ApplicationClass hat keinen Konstruktor definiert

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

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

und stand vor einer Kompilierung -Zeit Fehler, sagen

Es gibt keinen Konstruktor für Microsoft.Office.Interop.Excel.ApplicationClass Typen definiert ist.

Was fehlt mir?

Antwort

38

Try this:

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

Das ist es. Vielen Dank – horgh

+0

Nun, Office 14 + VS 2010 hat mit .NET 3.5 und ApplicationClass gearbeitet. Jetzt mit Office 2012 wird Office 14 nur mit .NET 4 erkannt und ich bekomme den gleichen Fehler, den Sie hatten. – Pedro77

3

folgendes Verwenden Sie es zu öffnen:

xlApp = CreateObject("Excel.Application"); 

Create erstellt und gibt einen Verweis auf ein COM-Objekt. Dokumentation finden Sie hier:

http://msdn.microsoft.com/en-us/library/7t9k08y5%28v=vs.71%29.aspx

+0

Was ist CreateObject? – horgh

+0

Nur einen Verweis auf die Dokumentation hinzugefügt. Ich habe keine Methode ausprobiert, die der ausprobiert, die Sie ausprobiert haben, also nicht sicher, ob es funktioniert oder nicht, aber ich habe gerade ein aktuelles VB.NET-Projekt überprüft, das funktioniert und das ist, wie ich es gemacht habe. – PeterJ

+0

+1: Vlad Spreys gab die Antwort, die ich brauchte. Trotzdem danke. – horgh

3

Wenn Sie mit C# 4.0 (.NET 4) Sie mit vielen einfachen Syntax gehen

var app = new Application(); 

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

In Bezug auf var: es macht Ihnen die Arbeit leichter, weil C# entscheidet, welchen Typ Sie wählen und für welchen Sie sich entscheiden. Bei Interesse können Sie über dynamische und varArten lesen.

Denken Sie daran, dass Interop vor C# 4.0 ist ein völlig anderes Phänomen und wie C# verwendet, um Microsoft-Objekte zu behandeln.

Nur damit Sie wissen, wie anders, das ist, wie Sie es vor C# 4.0 codiert haben sollten, um mit einem Word Dokument zu sprechen.

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

gut beschrieben, warum ** Anwendung() ** anstelle von ** ApplicationClass() ** hier bei [link] (http: //blogs.msdn. com/b/ptorr/Archiv/2004/02/05/67872.aspx) – Mehrad