Excle/Word进程查杀

来源:互联网 发布:海南儋州网络诈骗 编辑:程序博客网 时间:2024/05/04 21:34

公司项目上大量用到Excel/Word导入导出,最头疼的就是进程常驻后台,调用quite/dispose还是有然后就想到了以下方法.代码是粘贴的不能保留样式,高手勿喷.


   Microsoft.Office.Interop.Excel.Application xlsApp = null;
            #region 获取现有还未开启导出时的Excel进程
            System.Diagnostics.Process[] process = System.Diagnostics.Process.GetProcessesByName("Excel");
            List<int> old = process != null ? process.Select(row => row.Id).ToList() : null;
            string oldIds = "";
            if (old != null)
            {
                oldIds = string.Format(",{0},", string.Join(",", old));
            }
            #endregion

            xlsApp = new Microsoft.Office.Interop.Excel.Application();
            #region 获取现有已开启导出后的Excel进程
            process = System.Diagnostics.Process.GetProcessesByName("Excel");
            List<int> newList = process != null ? process.Select(row => row.Id).ToList() : null;
            if (newList != null)
            {
                foreach (var item in newList)
                {
                    if (!oldIds.Contains(string.Format(",{0},", item)))
                    {
                        Id = item;
                    }
                }
            }
            #endregion


  System.Diagnostics.Process[] process = System.Diagnostics.Process.GetProcessesByName("Excel");
            foreach (System.Diagnostics.Process p in process)
            {
                if (!string.IsNullOrEmpty(p.ProcessName))
                {
                    try
                    {

                        if (Id == p.Id)
                        {
                            p.Kill();
                            break;
                        }

                    }
                    catch
                    {

                    }
                }
            }


0 0