python如何关闭excel窗口_无法在Python上使用win32com完全关闭Excel - python

在Python中使用win32com关闭Excel时遇到问题,即使使用`Quit()`方法,Excel进程仍然存在。解决方法是通过`win32process`和`win32gui`强制关闭Excel窗口。代码示例中展示了如何在尝试正常关闭失败后,使用`WM_CLOSE`消息和`TerminateProcess`强制关闭Excel进程。
摘要由CSDN通过智能技术生成

这是我的代码,我为.NET框架VBA找到了很多答案,这很奇怪。当我执行此操作时,Excel关闭。

from win32com.client import DispatchEx

excel = DispatchEx('Excel.Application')

wbs = excel.Workbooks

wbs.Close()

excel.Quit()

wbs = None

excel = None #

但是,当我执行以下操作时,它不会关闭。

excel = DispatchEx('Excel.Application')

wbs = excel.Workbooks

wb = wbs.Open('D:\\Xaguar\\A1.xlsm')

wb.Close(False)

wbs.Close()

excel.Quit()

wb = None

wbs = None

excel = None #

我在堆栈溢出问题Excel process remains open after interop; traditional method not working中找到了一些可能的答案。问题是不是Python,我找不到Marshal.ReleaseComObject和GC。我查看了有关...site-packages/win32com和其他内容的所有演示。

即使我可以获取PID并杀死它,也不会打扰我。

我在Kill process based on window name (win32)中找到了解决方法。

可能不是正确的方法

Python中,使用Win32com库可以控制Windows应用程序,比如Microsoft Office系列。如果要检查一个Word文档(doc)中的内联形状(inline_shape)是否为Excel工作簿,并在确认后打开它,可以通过以下步骤实现: 1. 首先,确保安装了`pywin32`库,如果没有安装,可以通过`pip install pywin32`进行安装。 2. 使用`win32com.client`模块创建一个Word应用程序的实例。 3. 打开指定的Word文档。 4. 遍历文档中的所有内联形状,检查它们的类型。 5. 如果某个内联形状是链接到一个Excel工作簿,通过其路径打开Excel文件。 以下是一个简单的代码示例: ```python import win32com.client as win32 def open_excel_from_word(doc_path): # 创建Word应用程序实例 word = win32.gencache.EnsureDispatch('Word.Application') word.Visible = False # 可以设置为True,以便看到操作过程 # 打开Word文档 doc = word.Documents.Open(doc_path) # 遍历文档中的所有内联形状 for inline_shape in doc.InlineShapes: # 检查形状是否链接到文件 if inline_shape.Type == 13 and inline_shape.LinkToFile: # 获取文件路径 file_path = inline_shape.LinkTo # 检查文件路径是否包含.xlsm或.xlsx后缀,这里只是一个简单的检查方法 if file_path.lower().endswith(('.xlsm', '.xlsx')): # 打开Excel工作簿 excel = win32.gencache.EnsureDispatch('Excel.Application') excel.Visible = True # 可以设置为True,以便看到Excel窗口 workbook = excel.Workbooks.Open(file_path) # 这里可以进行进一步操作,如读取数据等 # 关闭Word文档 doc.Close(False) # 关闭Excel工作簿 workbook.Close(False) # 关闭Excel应用程序 excel.Quit() return # 关闭Word文档 doc.Close(False) # 关闭Word应用程序 word.Quit() # 使用函数,传入Word文档路径 open_excel_from_word("path_to_your_document.docx") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值