简体   繁体   English

win32com:通过在后台打开Excel文件来使用它

[英]win32com: work with excel file by opening it in background

So I use following code to open an existing excel file. 因此,我使用以下代码打开现有的excel文件。 Even though I make visible to False, but this always open the excel file UI. 即使我对False可见,但这始终会打开excel文件UI。 However I want to run it in the background. 但是我想在后台运行它。 How can I do that? 我怎样才能做到这一点?

import win32com.client as win32
excel = win32.gencache.EnsureDispatch('Excel.Application')
wb = excel.Workbooks.Open('my_sheet.xlsm')
excel.Visible = False

I now use one of MS Excel's alternative Kingsoft Spreadsheet. 我现在使用MS Excel的替代金山电子表格之一。 My snippet below used to run the application in the background. 我下面的代码段用于在后台运行该应用程序。

from win32com import client

xApp = None
for aname in ('Excel', 'eT', 'KeT'):
    try:
        xApp = client.Dispatch(aname + '.Application')
    except client.pywintypes.com_error:
        continue
    else:
        break
if xApp is None:
    print('No app found')
    raise SystemExit    # Application is unavailable.
else:
    # do something
    wb = excel.Workbooks.Open('my_sheet.xlsm')

On older version of MS Excel (before 2013) and KS Spreadsheet (before 2014), the above code worked fine, even without explicitly setting xApp.Visible to False. 在旧版本的MS Excel(2013年之前)和KS Spreadsheet(2014年之前)上,即使没有将xApp.Visible显式设置为False,上述代码也可以正常工作。 However, on recent version of Spreadsheet, it would launch a small UI window when quitting the application. 但是,在最新版本的Spreadsheet上,退出应用程序时会启动一个小的UI窗口。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM