C# 操作Excel的注意事項

當透過定期排程執行開啟 Office Excel進行相關作業時,通常會遇到一些莫名的錯誤,導致作業系統留下一堆無主的 EXCEL.EXE。這些背景 EXCEL.EXE看似無害,放著不管可是會逐步吃著記憶體,一點一滴霸佔著 CPU的。


按照 MSDN Code Sample的解釋,Excel是屬於 Unmanaged的程式,所佔用的相關資源是不會在一般所撰寫的程式結束時自動回收:
Step9. Clean up the unmanaged COM resource. To get Excel terminated rightly,we need to call Marshal.FinalReleaseComObject() on each COM object we used. We can either explicitly call Marshal.FinalReleaseComObject on all accessor objects:
因此,要確保任何情況下能夠確實釋放資源,程式需要加入 finally區段明確清理並依序關閉 Excel COM+物件,也就是說,在程式中曾經使用的 WorkbookWorksheetRangeCell,結束前都要使用 Marshal.FinalReleaseComObject()清掉以確保Excel程式能順利關閉。

連Range/Cell都要清除,還可真是挺麻煩的!你可能還想要知道:
張貼留言

最近三十天熱門文章

歡樂文青產生器

Win7 的字型顯示模糊問題

彤管揚輝