以前做web 程式的時候在.net環境下有時候是非常難將當前的excel或者word執行緒關閉,有時候在程式裡面執行完excel關閉並且釋放相關資源,但在伺服器端的excel程序要等一會才能被關閉掉。如果使用者在客戶端平凡對excel操作(在很短的時間內),即使在程式裡面控制了對excel元件的釋放和**,但是有可能伺服器端有n個excel程序沒有被關閉,造成伺服器可能死掉。我相信有過對excel程式設計的朋友對關閉excel程序特別是在web 覺得是件很麻煩的事情。網上也有很多關閉excel的例子,但是發現n多是相互**,都是用同一種辦法,而且效果也不是很好。
這幾天看到別人用system.diagnostics.process的時候想到了乙個新方法。下面是我的具體做法:
1: 在開啟或者新建excel,word的時候,先將當前程序裡的word,excel程序的id記錄下來(這些有可能是屬於使用者已經開啟的word或者excel程序,最後刪除的時候這些程序是不能kill 掉的
//在開啟excel前,將系統裡面已經存在的excel程序程序id儲存起來
listintlist = new list();
3:關閉就是如何關閉剛才新建的excel程序
//先用系統提供的方法對系統資源釋放,這種做法是大家常用的方法
system.runtime.interopservices.marshal.releasecomobject(worksheet);
system.runtime.interopservices.marshal.releasecomobject(workbook);
foreach (system.diagnostics.process p in system.diagnostics.process.getprocesses())
}//如果沒有匹配到的話,說明是程式新建的,則刪除他
if (bnewid == true)
}//使用者都沒有開啟過excel程序,則直接kill掉他
else}}
}
Web應用系統中關閉Excel程序
在web系統中呼叫excel操作後,關閉excel程序是個老問題 試了幾種方法都無效,最後還是得採用kill程序的方案,不過跟強行kill所有excel程序相比,下面的方案更為合理。程式只kill當前物件相應的excel程序。dllimport user32.dll setlasterror tru...
原創 C 生成Excel,徹底關閉程序
剛剛研究解決c 中生成excel後無法終止程序的問題。網上的2種方法 1 gc.collect 不一定有效 我這裡一定不有效 2 孟憲會的kill方法 會關掉所有excel程序。研究改進了一下kill方法,如下 foreach process p in process.getprocessesbyn...
c 怎麼關閉Excel
1 如果是直接用excel建立乙個新例項,然後用show 來開啟,那就用close 關閉 2 如果是以程序的方式開啟excel這個程式,那麼直接按excel本身右上角的關閉按鈕關閉就行 3 如果是嵌入到winform的話,可以用一下方法 excel.workbooks obooks excel.wo...