web-dev-qa-db-fra.com

Microsoft.Office.Interop.Excel.ApplicationClass n'a pas de constructeur défini

J'ai essayé de suivre Comment ouvrir un fichier Excel en C # tutoriel, c'est-à-dire ajouté une référence sur l'onglet Com à Microsoft Office 14.0 Object Library et a essayé de compiler du code:

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

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

et a fait face à une erreur de compilation, disant

Aucun constructeur n'est défini pour le type Microsoft.Office.Interop.Excel.ApplicationClass.

Qu'est-ce que je rate?

21
horgh

Essaye ça:

Excel._Application xlApp = new Excel.Application();
39
Vlad Spreys

Utilisez ce qui suit pour l'ouvrir:

xlApp = CreateObject("Excel.Application");

CreateObject crée et renvoie une référence à un objet COM. La documentation peut être trouvée ici:

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

3
PeterJ

Si vous utilisez C # 4.0 (.NET 4), vous pouvez utiliser une syntaxe beaucoup plus simple

var app = new Application( );

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

En ce qui concerne var: cela vous facilite le travail car C # C décide du type à choisir et à choisir. Si vous êtes intéressé, vous pouvez lire les styles dynamique et var.

N'oubliez pas que l'interopérabilité avant C # 4.0 est un phénomène totalement différent et comment C # était utilisé pour gérer les objets Microsoft.

juste pour que vous sachiez à quel point c'est différent, voici comment vous auriez dû le coder avant C # 4.0 pour parler à un document 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);
3
Mehrad