我目前想用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
调用并返回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
.