少不了對Excel文件的處理,幾乎都要用到對Excel文件的導(dǎo)入導(dǎo)出,第一個(gè)項(xiàng)目用到的導(dǎo)出是用DTS寫的,考試大提示因?yàn)槭俏④涀约旱膶?dǎo)出工具所以就不存在很多人碰見的Excel進(jìn)程問題,但是我第二個(gè)項(xiàng)目所有報(bào)表導(dǎo)出都要導(dǎo)成Excel文件,那么就發(fā)現(xiàn)存在大家常常碰見的現(xiàn)象就是進(jìn)程中有很多的Excel.EXE,并且時(shí)常導(dǎo)致系統(tǒng)無法繼續(xù)生成Excel文件問題。
通過網(wǎng)上查閱一些資料,加上自己對各種方法的試驗(yàn),寫下我對Excel進(jìn)程處理的一些經(jīng)驗(yàn)(為什么是經(jīng)驗(yàn)而不是代碼呢?)
1. 不要太在意進(jìn)程中有一些Excel.EXE,有時(shí)候并不影響生成Excel文件,既然這樣又何必太在意呢。
2. 首先操作系統(tǒng)我推薦用windows2003 而不是windows20000 感覺2003做了些處理,項(xiàng)目在2003跑的時(shí)候從沒出現(xiàn)過不能生成Excel文件的問題,而2000就經(jīng)常接到客戶的投訴。
3. 操作系統(tǒng)安裝Office時(shí),裝的是Office2003版本,記住要選擇應(yīng)用程序的高級自定義。然后把每個(gè)節(jié)點(diǎn)下面的.net可編程性支持選擇安裝。
4. 你項(xiàng)目中生成Excel文件的代碼一定不要有邏輯BUG,就是那種導(dǎo)致某個(gè)Excel對象出現(xiàn)異常,進(jìn)而導(dǎo)致某次Excel文件生成失敗,代碼最后按照網(wǎng)上通常說的對用到的Excel對象逐個(gè)釋放。當(dāng)然代碼最后加個(gè)GC.collect() 也可以。
5. 一般來說我的項(xiàng)目就沒出現(xiàn)過Excel文件生成不了的問題,不過還是怕萬一,所以就寫了個(gè)windows服務(wù)程序,定時(shí)掃描進(jìn)程,并殺掉進(jìn)程開始時(shí)間距離當(dāng)前時(shí)間5分鐘前的Excel進(jìn)程,這樣基本不會誤殺正在處理的Excel進(jìn)程。
6. 在web項(xiàng)目中對Excel對象僅僅是釋放,沒有用到Process.Kill() 這個(gè)方法,因?yàn)槟壳翱捶ㄊ莂sp.net用戶的權(quán)限不夠,無法使用上面的方法,在winform下面到可以使用該方法。
通過網(wǎng)上查閱一些資料,加上自己對各種方法的試驗(yàn),寫下我對Excel進(jìn)程處理的一些經(jīng)驗(yàn)(為什么是經(jīng)驗(yàn)而不是代碼呢?)
1. 不要太在意進(jìn)程中有一些Excel.EXE,有時(shí)候并不影響生成Excel文件,既然這樣又何必太在意呢。
2. 首先操作系統(tǒng)我推薦用windows2003 而不是windows20000 感覺2003做了些處理,項(xiàng)目在2003跑的時(shí)候從沒出現(xiàn)過不能生成Excel文件的問題,而2000就經(jīng)常接到客戶的投訴。
3. 操作系統(tǒng)安裝Office時(shí),裝的是Office2003版本,記住要選擇應(yīng)用程序的高級自定義。然后把每個(gè)節(jié)點(diǎn)下面的.net可編程性支持選擇安裝。
4. 你項(xiàng)目中生成Excel文件的代碼一定不要有邏輯BUG,就是那種導(dǎo)致某個(gè)Excel對象出現(xiàn)異常,進(jìn)而導(dǎo)致某次Excel文件生成失敗,代碼最后按照網(wǎng)上通常說的對用到的Excel對象逐個(gè)釋放。當(dāng)然代碼最后加個(gè)GC.collect() 也可以。
5. 一般來說我的項(xiàng)目就沒出現(xiàn)過Excel文件生成不了的問題,不過還是怕萬一,所以就寫了個(gè)windows服務(wù)程序,定時(shí)掃描進(jìn)程,并殺掉進(jìn)程開始時(shí)間距離當(dāng)前時(shí)間5分鐘前的Excel進(jìn)程,這樣基本不會誤殺正在處理的Excel進(jìn)程。
6. 在web項(xiàng)目中對Excel對象僅僅是釋放,沒有用到Process.Kill() 這個(gè)方法,因?yàn)槟壳翱捶ㄊ莂sp.net用戶的權(quán)限不夠,無法使用上面的方法,在winform下面到可以使用該方法。