使用windows操作EXCEL如何关闭EXCEL进程
2015-10-26 11:11
423 查看
经常项目上有导入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();
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();
相关文章推荐
- 【03】HTML head 头部分的标签说明 和 手机头部标签说明
- 九度OJ 1185:特殊排序 (排序)
- 【HDOJ】3047 Zjnu Stadium
- CB-9685 A fix for the magnifying glass popping up on iOS9 when longpr
- [Android] Handler源码解析 (Native层)
- 手机只能上QQ不能看网页
- JS实现的鼠标跟随代码(卡通手型点击效果)
- PHP编程效率的20个要点
- java List与json的转换
- LPC43XX JTAG Scan Chain
- <c:out >标签
- LifeRay的portlet开发(使用Netbeans)
- 将第一个换行符转换成’\0’
- 探索推荐引擎内部的秘密,第 3 部分: 深入推荐引擎相关算法 - 聚类
- Java Web SSH-Struts 2框架复习
- mongo查询
- 字符串操作之获取字符长度、元素个数
- tornado 学习笔记1 引言
- 重构后的ConditionHelper
- P55、面试题6:重建二叉树