打开excel文件时如何清理COM对象

时间:2017-03-24 02:08:34

标签: c# winforms

我写了一些代码来从现有的excel文件中读取单元格值。
当我调试时,程序抛出一个" System.Runtime.InteropServices.COMException"。我知道我们不应该在COM对象上使用2个点,但我不知道如何修复我的代码。
打开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);

    }

1 个答案:

答案 0 :(得分:0)

如果您使用字母数字索引,请使用:

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

或使用索引使用

访问单元格
string d = xlSheet.UsedRange.Cells[3, 2].Value.ToString();