当我执行Xlwings函数时,我可以保存并关闭工作簿。但我不能再关闭Excel 2016了。 这是一个已知的问题?我该如何解决这个问题?
答案 0 :(得分:7)
以下是我如何使用它:
import xlwings as xw
wbPath = [WorkbookPath]
wb = xw.Book(wbPath)
app = xw.apps.active
wb.save(wbPath)
#wb.close()
app.quit()
请注意,我注释了该行' wb.close()'。您可以跳过此步骤,只需设置app = active Excel实例,保存工作簿,然后退出应用程序。
答案 1 :(得分:2)
我遇到过 app.quit()
不起作用的情况。在这种情况下,我使用了 app.kill()
。
答案 2 :(得分:0)
只是为了建立在 mousy 的回答上,我现在有了这个上下文管理器:
class XwApp(xw.App):
def __enter__(self, *args, **kwargs):
return super(*args, **kwargs)
def __exit__(self, *args):
for book in self.books:
try:
book.close()
except: pass
self.kill()
我像这样使用:
with XwApp(visible=False) as app:
app.books.add()
# or
app.books.open('file.xlsx')
# ...
到目前为止,这似乎相当干净。 (但预先打开的 Excel 窗口总是会搞砸。)
答案 3 :(得分:0)
我知道这是旧的,但我无法找到有效的答案并找到解决方案。我能够通过访问 xlwings 中的 api 属性来关闭 Excel 实例。
xl = xw.apps.active.api
xl.Quit()
xlwings 只是 pywin32 的一个精美包装器,您可以通过实现 api 属性直接访问 pywin32 函数。