1

...

Excel.Application oXL;
Excel._Workbook oWB;
Excel._Worksheet oSheet;

oXL = new Excel.Application();
oWB = (Excel._Workbook)oXL.ActiveWorkbook;
oSheet = (Excel._Worksheet)oWB.Sheets[1];

oSheet.Cells[5,10] = "Value";

...

クラッシュ時にこれを生成します:

Unhandled Exception: System.NullReferenceException: Object reference not set to
an instance of an object.
   at ConsoleApplication1.Program.Main(String[] args) in C:\Wherever\Visual Studio 2008\Projects\ConsoleApplication20\ConsoleApplication20\Program.
cs:line 60

この場合、60行目は

oSheet = (Excel._Worksheet)oWB.Sheets[1];

行が書かれている場合、同じことが起こります

oSheet = (Excel._Worksheet)oWB.ActiveSheet;.

その時点で、Excel は既に画面上で開いており、新しいワークシートが配置されています。

4

1 に答える 1

2

エラーは、oWB が null であることを示しています。GUI から Excel を開くのとは異なり、自動化では新しい 3 枚のブックが作成されないため、null です。最初に本を明確にロードするか、本を追加する必要があります。

こちらの例を参照してください http://support.microsoft.com/kb/302084ここでは、新しいワークブックを明示的に追加して再生します

    //Get a new workbook.
    oWB = (Excel._Workbook)(oXL.Workbooks.Add( Missing.Value ));
于 2011-01-25T01:07:38.900 に答える