我對使用Microsoft.Office.Interop.Excel.Application
從Excel文件中讀取值的C#項目的工作:如何檢測Excel工作簿是否已關閉(在C#中使用Interop)?
try {
Application xlApp = new Application();
Workbook workbook = xlApp.Workbooks.Open(filename)
// ... Load Excel values ...
} finally {
// ... Tidy up ...
}
在finally
塊,我想,以確保一切被關閉,妥善處置所以沒有什麼人鬼混在內存和Excel關閉乾淨。有沒有看到這個代碼應該是什麼樣子(!更復雜的比我想象的),但有一點是可以包括各種主題是:
if (workbook != null) {
workbook.Close();
// ... possibly also Marshal.FinalReleaseComObject(workbook);
}
但是,這將引發一個錯誤,如果工作簿已經被關閉,所以我怎麼能安全地檢查這個?如果可能的話,寧願不要僅僅捕捉錯誤,因爲這種類型的東西往往會扭曲調試。在結束之前找到工作簿狀態是否有一種乾淨的方式?
還有一個q-am想知道是否需要workbook.Close()
如果xlApp.Quit();
事後完成 - 會退出Excel應用程序導致workbook.Close()
(和任何COM對象釋放)隱式發生?
很好地回答了這兩個Q的 - 謝謝! –