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

沒有留言:

「專業」就是連麻瓜都聽得懂的話術

 『 麻瓜 (英語:Muggle),在J·K·羅琳的《哈利波特》系列小說及電影中是泛指沒有任何魔法能力的人,也不是出生於魔法家庭的人。麻瓜也可以被描述為體內沒有任何魔法血統的人。』 Photo by Vitolda Klein on Unsplash 「你不是工程師,我很難跟你...

最近三十天熱門文章