我运行 Python XLWings 代码,其中顺序调用多个 Excel 文件。尽管代码在处理完每个 Excel 后将其关闭(并且在任何给定时刻打开的 Excel 不超过 1 个),但该过程变得越来越慢。内存测试显示关闭excel文件后仍有残留进程。
有更流畅的方法吗? XLWings 是否可以在后台模式下调用这些 Excel 文件,而无需花费时间和内存来加载界面?
感谢您的帮助。
是的,
xlwings
还允许您将 Excel 应用程序隐藏在后台。为此,您必须使用带有输入参数 xlwings.App
的
visible=False
对象。
简单的例子:
import xlwings as xw
app = xw.App(visible=False)
book = app.books[0]
sheet = book.sheets[0]
sheet.range('A1').value = 73913
book.save('book.xlsx')
app.kill()
谁能解释一下为什么这段代码会打开2个excel实例?根据我的观察,'app = xw.App(visible=True)' 打开一个新的 Excel 文件,如果我想将其隐藏在后台,我可以操作该文件,但 'wb = app.books.open(file_path)' 打开在一个我无法隐藏的新实例中...
def done_id(file_path, id_to_color):
try:
# Otwieranie pliku Excel w tle
app = xw.App(visible=True) # True for tests to see the 2nd instance
wb = app.books.open(file_path)
sheet = wb.sheets['LISTA']
# Przeszukiwanie kolumny B w poszukiwaniu ID i kolorowanie wiersza
for row in range(3, sheet.range('B' + str(sheet.cells.last_cell.row)).end('up').row + 1):
if sheet.range('B' + str(row)).value == id_to_color:
sheet.range('B' + str(row)).color = (0, 255, 0) # Ustawienie koloru zielonego
# Zapisanie zmian i zamknięcie pliku
wb.save()
wb.close()
except Exception as e:
print(f"Błąd: {e}")
finally:
# Zamknięcie aplikacji Excel
app.quit()