Xlwings 保存后不会关闭书

Xlwings won't close book after saving

我目前正在尝试使用 xlwings 打开一本书并更新它的链接,然后保存并关闭。我使用的相关代码是:

import os
import xlwings as xw

app=xw.App(add_book=False)
app.display_alerts=False

for file in os.scandir(dirname):
         if (file.name.endswith("Unposted Summary.xlsm")):
                path=file.path
                tmp=app.books.api.Open(path,UpdateLinks=True)
                tmp.save(path)
                app.quit()

在多次阅读文档并使用几种不同的方法(例如 app.quit()、app.kill()、book.close() 等之后...我一直保存后无法让xlwings关闭当前的书,所以我连链接是否正常更新的问题都没有考虑。

我猜问题出在我打开书籍的方式上。如果是这样,我不知道关闭它们的语法。

我通常不使用 xlwings,但据我了解 app.books.api.Open 调用和 returns COM 对象,我什至不认为 tmp.save(...) 会起作用(至少在我的情况下不会)。

更好的选择是直接使用 xw.Book 包装器而不是 api 调用:

for file in os.scandir(dirname):
     if (file.name.endswith("Unposted Summary.xlsm")):
        tmp=app.books.open(file.path, update_links=True)
        tmp.save()
        tmp.close()

我还建议您练习 os.path.abspath 并在循环 dirname 时牢记您的工作目录。