從我進公司開始做項目起,就少不了對Excel文件的處理,幾乎都要用到對Excel文件的導入導出,第一個項目用到的導出是用DTS寫的,因為是微軟自己的導出工具所以就不存在很多人碰見的Excel進程問題,但是我第二個項目所有報表導出都要導成Excel文件,那么就發現存在大家常常碰見的現象就是進程中有很多的Excel.EXE,并且時常導致系統無法繼續生成Excel文件問題。
通過網上查閱一些資料,加上自己對各種方法的試驗,寫下我對Excel進程處理的一些經驗(為什么是經驗而不是代碼呢?)
1. 不要太在意進程中有一些Excel.EXE,有時候并不影響生成Excel文件,既然這樣又何必太在意呢。
2. 首先操作系統我推薦用windows2003 而不是windows20000 感覺2003做了些處理,我的項目在2003跑的時候從沒出現過不能生成Excel文件的問題,而2000就經常接到客戶的投訴。
3. 操作系統安裝Office時,我裝的是Office2003版本,記住要選擇應用程序的高級自定義。然后最好把每個節點下面的.net可編程性支持選擇安裝。
4. 你項目中生成Excel文件的代碼一定不要有邏輯BUG,就是那種導致某個Excel對象出現異常,進而導致某次Excel文件生成失敗,代碼最后按照網上通常說的對用到的Excel對象逐個釋放。當然代碼最后加個GC.collect() 也可以。
5. 一般來說我的項目就沒出現過Excel文件生成不了的問題,不過我還是怕萬一,所以就寫了個windows服務程序,定時掃描進程,并殺掉進程開始時間距離當前時間5分鐘前的Excel進程,這樣基本不會誤殺正在處理的Excel進程。
6. 我在web項目中對Excel對象僅僅是釋放,沒有用到PRocess.Kill() 這個方法,因為我目前看法是asp.net用戶的權限不夠,無法使用上面的方法,在winform下面到可以使用該方法。
上面是我個人總結的經驗,拿出來和大家分享一下,另外我的博客文章都是原創的,如果轉載請注明出處:http://www.CUOXin.com/hustsay23/archive/2008/10/19/1314389.html)
新聞熱點
疑難解答