Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何关闭通过win32在python中打开的Excel实例?_Python - Fatal编程技术网

如何关闭通过win32在python中打开的Excel实例?

如何关闭通过win32在python中打开的Excel实例?,python,Python,我需要打开Excel工作表,刷新数据透视表,保存并关闭它。然而,每当我使用python打开Excel实例时,无论我多么努力,它都保持打开状态。我还想使用一个已经运行的实例(如果有),如果没有,则创建一个。最后,如果有实例正在运行,只需关闭工作簿,否则关闭Excel 我试过也没用。我也试过,但没有成功 这是代码。它所做的正是它应该做的,然而,Excel进程仍然在后台运行。我甚至可以调用Application.Visible=True,它会再次弹出 import pywintypes import

我需要打开Excel工作表,刷新数据透视表,保存并关闭它。然而,每当我使用python打开Excel实例时,无论我多么努力,它都保持打开状态。我还想使用一个已经运行的实例(如果有),如果没有,则创建一个。最后,如果有实例正在运行,只需关闭工作簿,否则关闭Excel

我试过也没用。我也试过,但没有成功

这是代码。它所做的正是它应该做的,然而,Excel进程仍然在后台运行。我甚至可以调用
Application.Visible=True
,它会再次弹出

import pywintypes
import pythoncom 
from win32com import client

pythoncom.CoInitialize()

try:
    Application = client.GetActiveObject("Excel.Application")
    Application.Visible = True
except pywintypes.com_error:
    Application = client.Dispatch("Excel.Application")
    Application.Visible = False

Workbook = Application.Workbooks.open('file_name.xlsx'))
Workbook.RefreshAll()
Workbook.Save()

if len(Application.Workbooks) == 1: # If there is only one workbook, close Excel
    Application.Quit()
else:
    Workbook.Close()

pythoncom.CoUninitialize()

您的
If
语句应该是
While
语句。类似于当大于1时,关闭工作簿,然后退出Excel。(大锤警告!)作为最后手段,您可以通过shell调用
子流程并关闭(杀死)Excel。类似于
taskkill/f/im Excel.exe
。再说一次,可能是你最后的选择。