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都要清除,還可真是挺麻煩的!你可能還想要知道:

沒有留言:

簡單使用 Openssl 測試指定加密

Photo by  Markus Winkler  on  Unsplash 有時候更換憑證,要測試指定的加密法連線運作是否正常,其中最簡單的方法,便是使用 Openssl 所提供的連線工具即可。 Client 參數   -msg:用16進位顯示所有協議數據包含 hands...

最近三十天熱門文章