一个彻底释放Excel进程的方法。
/// <summary>
/// 释放Excel所占的内存。
/// </summary>
public void ReleaseComObjectExcel()
{
if (m_objExcel != null)
{
m_objExcel.UserControl = false;
//m_objExcel.DisplayAlerts = false;
//m_objExcel.Quit();
//m_objBooks.Close();
ReleaseObj(m_objFont);
ReleaseObj(m_objRange);
ReleaseObj(m_objSheet);
ReleaseObj(m_objSheets);
ReleaseObj(m_objBook);
ReleaseObj(m_objBooks);
ReleaseObj(m_objExcel);
int generation = GC.GetGeneration(m_objExcel);
GC.Collect(generation);
m_oMissing = null;
}
}
/// <summary>
/// 释放对象,内部调用
/// </summary>
/// <param name="o"></param>
private void ReleaseObj(object obj)
{
if (obj != null)
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);
obj = null;
}
}