web-dev-qa-db-ja.com

Microsoft.Office.Interop.Excel.ApplicationClassにはコンストラクターが定義されていません

私は 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タイプに対して定義されたコンストラクターはありません。

私は何が欠けていますか?

21
horgh

これを試して:

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

以下を使用して開きます。

xlApp = CreateObject("Excel.Application");

CreateObjectは、COMオブジェクトへの参照を作成して返します。ドキュメントは次の場所にあります。

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

3
PeterJ

C#4.0(.NET 4)を使用している場合は、はるかに簡単な構文を使用できます。

var app = new Application( );

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

varに関しては、C#がどちらのタイプを選択して使用するかを決定するため、仕事が楽になります。興味がある場合は、dynamicおよびvarstylesについて読むことができます。

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);
3
Mehrad