我正在开发一个使用Microsoft.Office.Interop.Excel.Application
读取Excel文件中数值的C#项目:
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);
}
然而,如果工作簿已经关闭,则会抛出错误,那么我该如何安全地检查它?如果可能的话,最好不要仅仅捕获错误,因为这种类型的事情往往会扭曲调试。有没有一种干净的方法在关闭之前找出工作簿的状态?
还有一个问题 - 我想知道如果之后执行
xlApp.Quit();
,是否需要 workbook.Close()
,退出Excel应用程序是否会隐式地导致 workbook.Close()
(以及任何COM对象释放)发生?