2017-03-24 6 views
1

既存のExcelファイルからセル値を読み取るコードを書きました。
デバッグすると、プログラムは "System.Runtime.InteropServices.COMException"をスローします。私は、COMオブジェクトで2ドットを使うべきではないことを知っていますが、コードを修正する方法はわかりません。
Excelファイルを開くときにCOMオブジェクトをクリーンアップするのを手伝ってください。Excelファイルを開くときにCOMオブジェクトをクリーンアップする方法

private void button1_Click(object sender, EventArgs e) 
    { 
     Excel.Application xlApp = new Excel.Application(); 
     Excel.Workbook xlBook; 
     Excel.Worksheet xlSheet; 

     xlBook = xlApp.Workbooks.Open(@"C:\Users\trump45\Desktop\trump45.xls"); 
     xlApp.Visible = false; 

     xlSheet = xlBook.Sheets["Sheet4"]; 

     //Exception rising here    
     string d = xlSheet.UsedRange.Cells[3, "B"].Value.ToString(); 

     MessageBox.Show(d); 

     xlBook.Close(false, Missing.Value, Missing.Value); 
     xlApp.Quit(); 

     System.Runtime.InteropServices.Marshal.ReleaseComObject(xlSheet); 
     System.Runtime.InteropServices.Marshal.ReleaseComObject(xlBook); 
     System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp); 

    } 
+2

[どのように私はきちんとエクセル相互運用をクリーンアップするかの可能な複製をインデックスの使用を使用してセルにアクセスするにはオブジェクト?](http://stackoverflow.com/questions/158706/how-do-i-properly-clean-up-excel-interop-objects) –

+0

私はすでにこの記事を読んでいますが、修正方法はわかりません私のコード。私のコードを修正してください。ありがとうございました – mrJohnt4

+1

*私のコードを修正してください*ここでは有効な質問ではありません。例外からリンクされた複製、デバッガ、およびスタックトレースのコードを使用して、何が原因であるかを把握します。リンクされた複製のコードは、Excel interopコードを適切にクリーンアップする方法を正確に示しています。私たちがあなたのためにすべてをやろうとは思わないでください。 C#を使用してセルの内容を取得することに関する既存の質問もあります。 –

答えて

0

あなたはアルファ数値インデックスの使用を使用している場合:

string d = xlSheet.UsedRange.Cells["B3"].Value.ToString(); 

それとも

string d = xlSheet.UsedRange.Cells[3, 2].Value.ToString(); 
関連する問題