执行xlwings函数后,我无法关闭Excel 2016

时间:2016-12-11 17:55:04

标签: excel xlwings

当我执行Xlwings函数时,我可以保存并关闭工作簿。但我不能再关闭Excel 2016了。 这是一个已知的问题?我该如何解决这个问题?

4 个答案:

答案 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 函数。