为什么" app.visible = False"不能使excel应用程序运行backguound,但" app = xw.App(可见=假)"能够?

时间:2018-02-27 10:22:35

标签: python xlwings

我在3天前安装了最新的xlwings,用于我的Windows7 PC上的Python3.6.0 32位。 我希望xlwings能够在后台工作,所以我喜欢这样:

# -*- coding: utf-8 -*-
import xlwings as xw
import datetime

app = xw.apps.add()
app.visible = False

wb = app.books.open('catalog.xlsx')
sht = wb.sheets['Sheet1']
rg = sht.range('A1:B8')

time = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
sht.range('A20').value = time

wb.save()
app.kill()

当我运行它时,我的MS Office 2010窗口闪烁然后消失。

我搜索了stackoverflow,并得到了解决方案。如果我对此进行编码,它可以很好地工作:

# -*- coding: utf-8 -*-
import xlwings as xw

app = xw.App(visible=False)

wb = app.books.open('catalog.xlsx')    
sht = wb.sheets['Sheet1']
rg = sht.range('A1:B8')

time = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
sht.range('A20').value = time

wb.save()
app.kill()

但为什么app.visible = False不能很好地运作?

如果你能告诉我原因,我会在心里向你表示感谢。 ^ _ ^

1 个答案:

答案 0 :(得分:0)

它不能正常工作,因为当您的代码执行此操作时:

app = xw.apps.add()
app.visible = False

xlwings首先启动Office COM服务器 然后将其设置为不可见。这就是你看到闪光灯的原因。

当您的代码执行此操作时:

app = xw.App(visible=False)

xlwings启动Office COM服务器,从一开始就不可见。