关于C#中操作EXCEL后,关闭对象但EXCEL进程仍然存在的解决办法.

SmallBoyz 2014-09-30 09:14:35
自己之前一直被这个问题困扰,也在网上找了很多资料,大部分都是用杀死进程的方法来解决,个人觉得这个太影响代码美观了.今天偶然发现了解决办法.给大家共享一下.

现象 :我在C#中,需要从EXCEL导入或者导出数据,当导入导出结束后,使用excelApp.Quit()关闭EXCEL对象,但系统进程中仍然存在EXCEL进程.并没有关闭.

原因:其实excelApp.Quit();方法是可以正确的释放EXCEL进程的,我们导入导出EXCEL时,普遍方法是代码后台处理,前台并隐藏EXCEL界面,也就是excelApp.Visible = false (这是默认值,不设置的话也是False),当调用 excelApp.Quit()时,EXCELE会弹出个对话框,问你是否保存,而excelApp.Visible = false 时,保存对话框也一并隐藏掉了,所以EXCEL卡在了这个地方,造成了EXCEL不能正常释放进程.

解决方法:设置excelApp.DisplayAlerts = false,就是不提问任何提示,这样再关闭EXCEL对象时,就不会有保存提示,也就不会卡住了.

...全文
5451 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
於黾 2014-09-30
  • 打赏
  • 举报
回复
还是先正确理解一下公司的要求,到底什么东西不可以用,是否是第三方的付费软件的破解版不能用, 要么使用正版付费软件,要么使用开源免费软件 不可能什么第三方的都不能用吧 系统自带的dll难道就不是第三方软件了?
於黾 2014-09-30
  • 打赏
  • 举报
回复
引用 9 楼 SmallBoyz 的回复:
[quote=引用 3 楼 diaodiaop 的回复:] 如果你真的搜索你会发现.这个东西根本无解.. 而且几乎没这么干的 使用excel对象.. 所以 我们大家都在用 http://bbs.csdn.net/topics/390830774
感谢你的回复,我正在看NPOI的资料. 我们公司有要求, 1 第三方的东西不可以用, 2 导出都是复杂格式(类似复杂报表),需要使用模板,以及非常多的代码来控制数据写入EXCEL格的位置,并且格式化,颜色,外框都要处理.上个项目还是动态计算Cell位置.并非只是普通的数据导出.[/quote] 1.难道office不属于第三方的东西?所谓第三方的东西不可以用,你只能自己破解excel的格式,然后直接处理文件流了 2.复杂格式,NPOI可以实现
threenewbee 2014-09-30
  • 打赏
  • 举报
回复
说到底,vba仅仅是一种客户端技术。它根本不适合服务器那样长期稳定地运行。
IDIOT 2014-09-30
  • 打赏
  • 举报
回复
坚持使用EXCEL.DLL,就要有忍受用户各种抱怨的觉悟哦。
SmallBoyz 2014-09-30
  • 打赏
  • 举报
回复
引用 3 楼 diaodiaop 的回复:
如果你真的搜索你会发现.这个东西根本无解.. 而且几乎没这么干的 使用excel对象.. 所以 我们大家都在用 http://bbs.csdn.net/topics/390830774
感谢你的回复,我正在看NPOI的资料. 我们公司有要求, 1 第三方的东西不可以用, 2 导出都是复杂格式(类似复杂报表),需要使用模板,以及非常多的代码来控制数据写入EXCEL格的位置,并且格式化,颜色,外框都要处理.上个项目还是动态计算Cell位置.并非只是普通的数据导出.
於黾 2014-09-30
  • 打赏
  • 举报
回复
引用 6 楼 diaodiaop 的回复:
不如你去玩个aspose.word那个东西吧
等我下次需要导出WORD的时候,一定用aspose.word 目前还是导出EXCEL的居多
by_封爱 版主 2014-09-30
  • 打赏
  • 举报
回复
引用 4 楼 Z65443344 的回复:
现在下载次数多少了?
好腻害 排名都900多了...
by_封爱 版主 2014-09-30
  • 打赏
  • 举报
回复
引用 4 楼 Z65443344 的回复:
你这个链接被我转载许多次了... 现在下载次数多少了?
下载次数:203 没办法,还是有很人 上百度搜索使用office组件..而且从来不搜索..还一直问问问问问... 最近也有很多.不搜索上来就问的..还有doc的 不如你去玩个aspose.word那个东西吧
害羞的大叔 2014-09-30
  • 打赏
  • 举报
回复
引用 楼主 SmallBoyz 的回复:
解决方法:设置excelApp.DisplayAlerts = false,就是不提问任何提示,这样再关闭EXCEL对象时,就不会有保存提示,也就不会卡住了.
谢谢分享,
於黾 2014-09-30
  • 打赏
  • 举报
回复
引用 3 楼 diaodiaop 的回复:
如果你真的搜索你会发现.这个东西根本无解.. 而且几乎没这么干的 使用excel对象.. 所以 我们大家都在用 http://bbs.csdn.net/topics/390830774
你这个链接被我转载许多次了... 现在下载次数多少了?
by_封爱 版主 2014-09-30
  • 打赏
  • 举报
回复
如果你真的搜索你会发现.这个东西根本无解.. 而且几乎没这么干的 使用excel对象.. 所以 我们大家都在用 http://bbs.csdn.net/topics/390830774
於黾 2014-09-30
  • 打赏
  • 举报
回复
很好,学习了. 不过现在有NPOI了,不依赖OFFICE版本,兼容32位和64位,还是抛弃EXCEL.DLL吧.
exception92 2014-09-30
  • 打赏
  • 举报
回复
客户使用的是你的功能,又不会看你的代码。
於黾 2014-09-30
  • 打赏
  • 举报
回复
引用 16 楼 yuwenge 的回复:
你们服务器上的office难道是正版?
你应该先问:你们服务器的操作系统难道是正版?
卧_槽 2014-09-30
  • 打赏
  • 举报
回复
引用 9 楼 SmallBoyz 的回复:
[quote=引用 3 楼 diaodiaop 的回复:] 如果你真的搜索你会发现.这个东西根本无解.. 而且几乎没这么干的 使用excel对象.. 所以 我们大家都在用 http://bbs.csdn.net/topics/390830774
感谢你的回复,我正在看NPOI的资料. 我们公司有要求, 1 第三方的东西不可以用, 2 导出都是复杂格式(类似复杂报表),需要使用模板,以及非常多的代码来控制数据写入EXCEL格的位置,并且格式化,颜色,外框都要处理.上个项目还是动态计算Cell位置.并非只是普通的数据导出.[/quote] 你们服务器上的office难道是正版?
泡泡龙 2014-09-30
  • 打赏
  • 举报
回复
说明你代码习惯不好,操作office要先关闭工作簿,再关闭application。close workbook false 不存盘退出
huwei001982 2014-09-30
  • 打赏
  • 举报
回复
用 openxml 或者 npoi

110,546

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧