使用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();