如何读取并修改带有密码的 EXCEL 文件
demo 需求 :已知 EXCEL 的密码 123456,想要读取所有 A 列为 【否】 的身份证号,返回一个 list;
将所有的【否】改为【是】,保存结果文件。
贴上代码和数据源文件(密码 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 ()
哇,这是纯代码解决的吗
优秀