C# 如果用户终止任务栏的excel进程,如何处理异常

C# 如果用户终止任务栏的excel进程,如何处理异常,c#,excel-interop,C#,Excel Interop,我使用以下代码读取excel文件 private void ReadTheExcelInteropWay() { Excel.Application xlApp = null; Excel.Workbook xlWorkBook = null; Excel.Worksheet xlWorkSheet = null; Excel.Range xlRange = null; object misValue = System.Reflection.Missing

我使用以下代码读取excel文件

private void ReadTheExcelInteropWay()
{
    Excel.Application xlApp = null;
    Excel.Workbook xlWorkBook = null;
    Excel.Worksheet xlWorkSheet = null;
    Excel.Range xlRange = null;
    object misValue = System.Reflection.Missing.Value;
    DataColumn dc = null;
    DataRow dr = null;

    try
    {
        xlApp = new Excel.Application();
        xlWorkBook = xlApp.Workbooks.Open("C:\\Users\\301591\\Desktop\\emp.xlsx", misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue);
        xlWorkSheet = (Excel.Worksheet)xlWorkBook.Sheets[1];
        dt = new DataTable();

        int colCount = xlWorkSheet.UsedRange.Cells.Columns.Count;
        int rowCount = xlWorkSheet.UsedRange.Cells.Rows.Count;
        for (int count = 0; count < colCount; count++)
        {
            dc = new DataColumn();
            dc.DataType = typeof(string);
            dt.Columns.Add(dc);
            dt.AcceptChanges();
        }
        for (int i = 1; i <= rowCount; i++)
        {
            dr = dt.NewRow();
            for (int j = 1; j <= colCount; j++)
            {
                xlRange = (Excel.Range)xlWorkSheet.Cells[i, j];
                string strValue = xlRange.Text.ToString();
                dr[j-1] = strValue;
            }
            dt.Rows.Add(dr);
            dt.AcceptChanges();
        }

        xlWorkBook.Close(true, misValue, misValue);
        xlApp.Quit();
    }
    catch (Exception ex)
    {
    }
    finally
    {
        this.ReleaseObject(xlApp);
        this.ReleaseObject(xlWorkBook);
        this.ReleaseObject(xlWorkSheet);
        this.ReleaseObject(xlRange);
        this.grImport.ItemsSource = dt.DefaultView;
    }
}

private void ReleaseObject(object obj)
{
    try
    {
        System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);
        obj = null;
    }
    catch (Exception ex)
    {
        obj = null;
        MessageBox.Show("Unable to release object");
    }
    finally
    {
        GC.Collect();
    }
}
private void readtheExcelineteropway()
{
Excel.Application xlApp=null;
Excel.Workbook xlWorkBook=null;
Excel.Worksheet xlWorkSheet=null;
Excel.Range xlRange=null;
对象错误值=System.Reflection.Missing.Value;
DataColumn dc=null;
数据行dr=null;
尝试
{
xlApp=new Excel.Application();
xlWorkBook=xlApp.Workbooks.Open(“C:\\Users\\301591\\Desktop\\emp.xlsx”,misValue,misValue,misValue,misValue,misValue,misValue,misValue,misValue,misValue,misValue,misValue);
xlWorkSheet=(Excel.Worksheet)xlWorkBook.Sheets[1];
dt=新数据表();
int colCount=xlsheet.UsedRange.Cells.Columns.Count;
int rowCount=xlsheet.UsedRange.Cells.Rows.Count;
for(int count=0;count对于(int i=1;我记得很久以前就有过这样的问题。我得出的结论是a)excel com互操作是垃圾,或者B)excel com互操作是垃圾,无法继续使用。因此我使用了第三方库。第三方库:如Open Xml SDK(xlsx)、NPOI(xls)这大致类似于当程序中止时您正忙于编写的文件所发生的情况。或者我正在键入的此注释导致SO服务器崩溃。没有什么好处。没有简单的解决方法。