zey*_*cus 19 python excel visibility xlwings
我开始使用XLWings(根本不是我喜欢Excel,但这是我必须做的事情).问题是我找不到让Python打开工作簿而不显示它的方法.
看起来旧XLWings 0.6.4中Workbooks的构造函数是xlwings.Workbook,其中一个参数是一个标记'app_visible'(参见http://docs.xlwings.org/en/v0.6.4/api.html).
但是,在新的v0.9.2工作簿中已被Book取代,而Book没有任何此类标志(http://docs.xlwings.org/en/stable/api.html).App对象确实拥有它,我认为这是要走的路.所以我编码:
import xlwings as xw
app = xw.App(visible=False)
filename = os.path.join(PATH_EXCEL_SAMPLES, r"rangosConDatos_sample01.xls")
book = xw.Book(filename)
# Do stuff with the info in the book
book.close() # Ya puedo cerrar el libro.
app.kill()
Run Code Online (Sandbox Code Playgroud)
但是,令人遗憾的是,什么时候
book = xw.Book(filename)
Run Code Online (Sandbox Code Playgroud)
执行app的'visible'属性突然变为True,并显示该书.我不知道这是一个期望的功能还是一个意外的行为.无论如何,任何想法我应该怎么做?
Ale*_*kov 11
这是我的工作代码片段:
import xlwings
excel_app = xlwings.App(visible=False)
excel_book = excel_app.books.open('PATH_TO_YOUR_XLSX_FILE')
excel_book.save()
excel_book.close()
excel_app.quit()
Run Code Online (Sandbox Code Playgroud)
mou*_*wsy 10
从0.24.3版本开始,在哪里with xw.App():实现,惯用的方式是:
import xlwings as xw
with xw.App(visible=False) as app:
wb = xw.Book("test.xlsx")
# Do some stuff e.g.
wb.sheets[0]["A1"].value = 12345
wb.save("test.xlsx")
wb.close()
Run Code Online (Sandbox Code Playgroud)
这样做的优点是,如果您使用隐藏实例并且代码失败,则后台不会留下任何隐藏的 Excel 进程。