Xlwings保存后无法关闭书本。

问题描述 投票:0回答:1

我目前想用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在保存当前书籍后关闭,所以我甚至没有接触过链接是否正常更新的问题。

我猜测问题是来自于我打开书籍的方式。如果是这样,我不知道关闭它们的语法。

python xlwings
1个回答
1
投票

我通常不使用 xlwings但据我所知 app.books.api.Open 调用并返回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.

© www.soinside.com 2019 - 2024. All rights reserved.