使用windows操作EXCEL如何关闭EXCEL进程

  经常项目上有导入excel的需求,其实导入一个固定格式的excel数据非常容易,但是,发现一个问题就是,导入excel后,用户在打开excel时,必须要打开2次才能打开excel,这让人很不爽;开始查找原因:excel的进程关闭不了,资源不能释放,于是就想尽办法释放com对象excel实例;

   public Excel.Application app;   //Excel对象
   public Excel.Workbooks wbs;     //工作簿集
   public Excel.Workbook wb;       //工作簿
   public Excel.Worksheets wss;    //工作表集
   public Excel.Worksheet ws;      //工作表集

   wb.Close(Type.Missing, Type.Missing, Type.Missing);
   wbs.Close();
   app.Quit();

   wb = null;
   wbs = null;
   app = null;
   GC.Collect();

 这样并不能关闭EXCEL进程;

解决方法:

 [DllImport("User32.dll", CharSet = CharSet.Auto)]
 public static extern int GetWindowThreadProcessId(IntPtr hwnd, out   int ID);

 IntPtr t = new IntPtr(app.Hwnd);          //杀死进程的好方法,很有效
 int k = 0;
 GetWindowThreadProcessId(t, out k);
 System.Diagnostics.Process p = System.Diagnostics.Process.GetProcessById(k);
 p.Kill();

  

  

 

posted @ 2015-10-26 11:11  水蓝色的梦  阅读(1143)  评论(0编辑  收藏  举报