用C#关闭打开的excel工作簿
本文关键字:excel 工作簿 | 更新日期: 2023-09-27 17:57:34
我一直有一个问题,我正在努力解决它,因为如果程序崩溃(excel文件在后台保持打开),或者用户已经打开了excel工作簿,程序将崩溃,因为它无法打开已经打开的工作簿。
试图通过使用以下问题中的方法来解决此问题:C#:如何打开和关闭Excel工作簿?
但令我沮丧的是没有成功。
有了这个设置,我在wb.Close(true)
上得到一个错误,说我不能使用未分配的局部变量。对我来说,这有点道理,但我不明白这是怎么回事。这不像if
语句,如果条件不满足,它就不会跳到循环中。try
块将始终执行。
Excel.Workbook wb;
try
{
wb = exApp.Workbooks.Open(@file);
}
catch (Exception)
{
wb.Close(true);
}
我也尝试过这种方式:
Excel.Workbook wb = new Excel.Workbook();
try
{
wb = exApp.Workbooks.Open(@file);
}
catch (Exception)
{
wb.Close(true);
}
但这一次,在运行程序时,我在Excel.Workbook wb = new Excel.Workbook();
线上得到了一个error: 80040154 Class not registered
。再一次不知道为什么。
非常感谢您的帮助。
试试这个:
Excel.Workbook wb = null;
try
{
wb = exApp.Workbooks.Open(@file);
}
catch (Exception)
{
if (wb != null) wb.Close(true);
}
您需要finally
而不是catch
。无论是否出现异常,finally
块都将始终执行。即使没有引发异常,您仍然希望关闭工作簿以清除资源。
像这样的东西应该是你需要的。
Excel.Workbook wb = new Excel.Workbook();
try {
wb = exApp.Workbooks.Open(@file);
//More code...
}
catch (Exception ex) {
// Do any error handling you need/want to here.
}
finally {
// If there's a way to determine if the workbook is open, try that first.
wb.Close(true);
}