如何读取并修改带有密码的 EXCEL 文件

demo 需求 :已知 EXCEL 的密码 123456,想要读取所有 A 列为 【否】 的身份证号,返回一个 list;
将所有的【否】改为【是】,保存结果文件。

如何读取并修改带有密码的 EXCEL 文件
贴上代码和数据源文件(密码 123456):
ID_before.xlsx

import win32com.client,pythoncom

def test(excel_path,passwd,outpath):
    # 参数 可以传参,测试时也可以写在方法内
    excel_path = r'C:/Users/Administrator/Desktop/ID_before.xlsx'
    passwd = '123456'
    outpath = r'C:/Users/Administrator/Desktop/ID_after.xlsx'
    try:
        pythoncom.CoInitialize ()
        xlsApp = win32com.client.Dispatch("Excel.Application")
        #xlsApp = win32com.client.DispatchEx('Excel.Application')
        #禁用事件
        xlsApp.EnableEvents = False
        #禁止弹窗
        xlsApp.DisplayAlerts = False
        
        
        #注: 当使用密码时,前边的几个参数都必须存在
        xlwb = xlsApp.Workbooks.Open(excel_path, False, True, None, Password=passwd)
        # 屏蔽弹窗
        xlwb.Checkcompatibility = False
        #1:打开宏,2:禁用宏
        xlwb.RunAutoMacros(2)
        #获取指定SHEET
        sht = xlwb.Sheets(1)#.Cells(1,1)
        #获取数据源  TUPLE
        data_tuple = sht.UsedRange.Value
        #输出List初始化
        result_list = []
        #遍历
        for i in range(1,len(data_tuple)):
            if data_tuple[i][0] == '否':
                #满足条件的身份证加入 结果List
                result_list.append(str(data_tuple[i][1]))
                #修改第一列为 是
                sht.Cells(i+1,1).Value = '是'
        print(result_list)
        #保存至输出路径
        xlwb.SaveAs(outpath)
        #返回 为否的身份证号 list
        return result_list
    except Exception as e:
        print(e)
        # 具体处理看情况
    finally:
        try:
            xlsApp.DisplayAlerts = False
            xlwb.Close(SaveChange = False)
            xlsApp.DisplayAlerts = True
        except:
            pass
        try:
            xlsApp.Application.Quit()
            del xlsApp
        except:
            pass
        pythoncom.CoUninitialize ()