Excel释放进程

/// <summary> /// /// </summary> private Excel.ApplicationClass m_xApp; private Excel.Workbooks m_xBooks; private Excel.Workbook m_xBook; /// <summary> /// 当前活动 /// </summary> private Excel.Worksheet m_xSheet; /// <summary> /// Excel单元格集合 /// </summary> private Excel.Range m_xRange; /// <summary> /// 缺少Object /// </summary> private object m_Missing = Missing.Value;


C# code
/// <summary> /// 释放所引用的COM对象。注意:这个过程一定要执行。 /// </summary> public void Dispose() { Release(m_xSheet); Release(m_xBook); Release(m_xBooks); //Release(m_xApp); KillSpecialExcel(); System.GC.Collect(); System.GC.WaitForPendingFinalizers(); } /// <summary> /// 释放对象,内部调用 /// </summary> /// <param name="o">将释放的对象</param> private void Release(object o) { try { System.Runtime.InteropServices.Marshal.ReleaseComObject(o); } catch { } finally { o = null; } } [DllImport("user32.dll", SetLastError = true)] static extern int GetWindowThreadProcessId(IntPtr hWnd, out int lpdwProcessId); /// <summary> /// 找到Excel的进程ID,然后杀死这个进程 /// </summary> public void KillSpecialExcel() { try { if (m_xApp != null) { int lpdwProcessId; IntPtr intPtr = new IntPtr(m_xApp.Hwnd); GetWindowThreadProcessId(intPtr, out lpdwProcessId); System.Diagnostics.Process.GetProcessById(lpdwProcessId).Kill(); } } catch (Exception ex) { Console.WriteLine("Delete Excel Process Error:" + ex.Message); } }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值