Как обрабатывать исключения, если пользователь завершает процесс Excel панели задач - PullRequest
0 голосов
/ 24 февраля 2012

Я использую следующий код для чтения файла 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();
    }
}

Проблема в том, что если программа завершает работу ... или пользователь завершает работу программы ... процесс Excel на панели задач не завершается. Как можно решить это. Пожалуйста, ведите меня. Дайте мне знать, если вам нужна какая-либо другая информация о том же.

С уважением, Приянк Тхаккар

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...