从我进公司开始做项目起,就少不了对Excel文件的处理,几乎都要用到对Excel文件的导入导出,第一个项目用到的导出是用DTS写的,因为是微软自己的导出工具所以就不存在很多人碰见的Excel进程问题,但是我第二个项目所有报表导出都要导成Excel文件,那么就发现存在大家常常碰见的现象就是进程中有很多的Excel.EXE,并且时常导致系统无法继续生成Excel文件问题。
通过网上查阅一些资料,加上自己对各种方法的试验,写下我对Excel进程处理的一些经验(为什么是经验而不是代码呢?)
1. 不要太在意进程中有一些Excel.EXE,有时候并不影响生成Excel文件,既然这样又何必太在意呢。
2. 首先操作系统我推荐用windows2003 而不是windows20000 感觉2003做了些处理,我的项目在2003跑的时候从没出现过不能生成Excel文件的问题,而2000就经常接到客户的投诉。
3. 操作系统安装Office时,我装的是Office2003版本,记住要选择应用程序的高级自定义。然后最好把每个节点下面的.net可编程性支持选择安装,如图1,2
4. 你项目中生成Excel文件的代码一定不要有逻辑BUG,就是那种导致某个Excel对象出现异常,进而导致某次Excel文件生成失败,代码最后按照网上通常说的对用到的Excel对象逐个释放。当然代码最后加个GC.collect() 也可以。
5. 一般来说我的项目就没出现过Excel文件生成不了的问题,不过我还是怕万一,所以就写了个windows服务程序,定时扫描进程,并杀掉进程开始时间距离当前时间5分钟前的Excel进程,这样基本不会误杀正在处理的Excel进程。
6. 我在web项目中对Excel对象仅仅是释放,没有用到Process.Kill() 这个方法,因为我目前看法是asp.net用户的权限不够,无法使用上面的方法,在winform下面到可以使用该方法。
上面是我个人总结的经验,拿出来和大家分享一下,另外我的博客文章都是原创的,如果转载请注明出处:)