C#执行Excel宏模版的方法(三)

2014-11-24 14:34:32 · 作者: · 浏览: 12
sMode.xlExclusive, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);

// Quit Excel.
ExcelWB.Close(false, strOutFileName, Missing.Value);//*******************


MarshalReleaseComObject(ExcelWB);


ExcelApp.Quit();


}
catch (Exception ex)
{
throw ex;
flag = false;
}
finally
{
MarshalReleaseComObject(ExcelApp);
GC.Collect();
}


return flag;
}


//使用Excel来导出报表时,在服务器上的Excel进程容易死掉,导致资源无法释放,因此需要使用这个方法来释放死掉的进程


private static void MarshalReleaseComObject(object objCom)
{
try
{
int i = 1;
if (objCom != null && System.Runtime.InteropServices.Marshal.IsComObject(objCom))
{
do
{
i = System.Runtime.InteropServices.Marshal.ReleaseComObject(objCom);
} while (i > 0);
}
}
finally
{
objCom = null;
}
}


}