如果打开后发现错误,如何避免打开工作簿?

Posted

技术标签:

【中文标题】如果打开后发现错误,如何避免打开工作簿?【英文标题】:How to avoid leaving a workbook open if error is found after its opening? 【发布时间】:2019-07-19 16:28:43 【问题描述】:

我有一段代码通过xlwings 包打开工作簿并从中读取一些内容。完成后,工作簿将关闭。有时,开始和结束语句之间会出现错误。这使工作簿保持打开状态。当我尝试再次运行代码时,文件无法打开,因为它已经“打开”了。

我该如何处理?

而且,发生这种情况时,我什至无法手动打开工作簿。

w1=app.books.open("WorkbookName.xlsx")
# Do stuff that can potentially give errors.
w1.close()

我希望创建一些错误处理,以便如果在此过程中发现异常,工作簿会在此之后关闭。

【问题讨论】:

错误处理的python文档其实很不错-docs.python.org/3/tutorial/errors.html#handling-exceptions 【参考方案1】:

使用try-finally 构造:

w1=app.books.open("WorkbookName.xlsx")
try:
    # Do stuff that can potentially give errors.
finally:
    w1.close()

始终执行finally 子句。如果try 子句中的代码引发了未处理的异常,那么python 解释器将跳转到finally 子句并执行它(并且仅在之后自行终止)。

【讨论】:

以上是关于如果打开后发现错误,如何避免打开工作簿?的主要内容,如果未能解决你的问题,请参考以下文章

如何用Workbooks.Open打开Excel工作簿,如何操作?

尝试打开Excel工作簿时,尝试/ Catch不会激活

Excel vba:打开工作簿时分配全局变量;如果发生错误则被删除

VBA - 另存为后工作簿的对象会发生啥?

如何关闭空白 Excel 工作簿和宏工作簿?

为每个打开的工作簿执行功能