楼主: 1244690926
6567 14

PYTHON 如何关闭指定的某个EXCEL文件 [推广有奖]

11
liuxi002 发表于 2022-1-10 01:24:16
楼主,我和你也有一样的需求,但是用你提供的代码怎么关闭不了呢?

12
1244690926 发表于 2022-1-10 09:56:16
liuxi002 发表于 2022-1-10 01:24
楼主,我和你也有一样的需求,但是用你提供的代码怎么关闭不了呢?
from win32com.client import Dispatch

def close_excel_file(file = 'output.xlsx'):
    xlApp = Dispatch('Excel.Application')
    xlApp.DisplayAlerts = False  # 设置不显示警告和消息框
    #xlBook = xlApp.Workbooks.Open(file)
    workbooks_n = xlApp.Workbooks.Count
    print(f'已打开工作簿的数量为:{workbooks_n}个')

    if workbooks_n < 0:return
        
    for i in range(1, workbooks_n + 1):# 工作簿索引从1开始
        path_ = xlApp.Workbooks(i).Path
        name_ = xlApp.Workbooks(i).Name
        path = path_+ "\\backup_" + name_
        # print(f'第{i}个excel的文件路径为:{path}')
        if(file in path):
            xlApp.Workbooks(i).Close() #关闭当前打开的文件,不保存文件
            # xlApp.Workbooks(i).Activate()
            # xlApp.Workbooks(i).SaveAs(path)
            # xlApp.Workbooks(path).Close()

    # xlApp.Quit()  #关闭所有打开的excel文件
    del xlApp

13
1244690926 发表于 2022-1-12 14:31:35
liuxi002 发表于 2022-1-10 01:24
楼主,我和你也有一样的需求,但是用你提供的代码怎么关闭不了呢?
可以关闭哦

14
liuxi002 发表于 2022-1-13 15:11:21
感谢楼主回复,我后来用如下代码可以关闭。
import win32com.client as win32

if __name__ == '__main__':
    xl_app = win32.gencache.EnsureDispatch("Excel.Application")
    for wb in xl_app.Workbooks:
        if(wb.Name == xlspath):#wb.Name只返回文件的名字,不包含路径
            print(f'【{wb.Name}】已经被打开,自动关闭……')
            wb.Close(1)
            if xl_app.Workbooks.Count == 0:
                xl_app.Quit()
            break

15
hzfeng1995 发表于 2023-5-16 20:34:04
1244690926 发表于 2021-12-29 16:32
from win32com.client import Dispatch

def close_excel_file(file = 'output.xlsx'):
抱歉,点错了,这地方有个问题,对于同台电脑,不同会话窗口打开的excel工作簿并不能检测到

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-28 15:14