波斯马BOSSMA Information Technology

C#导出Excel后关闭进程(EXCEL.EXE)释放资源的解决方案

发布时间:2009年2月3日 / 分类:ASP.NET / 30,319 次浏览 / 评论

一年前,从网上找到一些C#导出MS Excel的例子,但是都不能彻底销毁其所创建的Excel进程,典型的就是进程中的EXCEL.EXE不能关掉。

网上的解决方案大部分是kill掉所有的Excel进程,偶一直感觉不爽。最近,做了几个月的WinForm,接触了一些进程、句柄方面的知识。于是试着解决一下,没想到成功了,创建的Excel进程被成功Kill掉了,而其它Excel进程则相安无事。

关键代码:

操作生成Excel的全部代码:

最关键的就是KillSpecialExcel()这个方法,找到Excel的进程ID,然后杀死这个进程。
断断续续找了很久,终于发现了这个方法。

看一个例子:

其它方面还没有测试,有兴趣的话可以自己试试。

这似乎是一个完美的解决方案了,但是速度实在不敢保证,而且耗费的内存和CPU资源也比较多。
对于用户少较少的应用还可以凑合,并发多了,真不敢想象。

以前还用过生成csv文件的方法,但是格式没办法设置;
我想能不能直接构建excel的代码格式,然后保存成.xls,但是一直还没有成功。

本博客所有文章如无特别注明均为原创。
复制或转载请以超链接形式注明转自波斯马,原文地址《C#导出Excel后关闭进程(EXCEL.EXE)释放资源的解决方案

关键字:

建议订阅本站,及时阅读最新文章!
【上一篇】 【下一篇】

目前有7 条评论

  1. eolandezhang 6楼:

    谢谢楼主了,可以解决问题。

  2. gaowb 5楼:

    thank you 非常有帮助

  3. freshways 4楼:

    (#‵′)靠,强悍,顶

  4. arst 地板:

    太強了,一堆用Marshal.ReleaseComObject,結果Excel.exe還在

  5. Rey 板凳:

    确实不错,感谢lz

  6. Tim 沙发:

    这篇文章确实难得,网上都找不着,简直是价值连城!

发表评论