C# 如果用户终止任务栏的excel进程,如何处理异常
我使用以下代码读取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
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服务器崩溃。没有什么好处。没有简单的解决方法。