win32com.client清除EXCEL文件打开密码问题

FC_BI1ADI 2020-08-15 06:20:59
前期开发使用低版OFFICE,使用win32com.client调用EXCEL应用程序,采用SaveAs方法清空文件打开密码,均正常。
升级OFFICE后,使用SaveAs方法可修改密码,但将密码设置为空时,无法清空密码。代码如下:
def remove_xlsx_password(filename, pw_str):
xcl = win32com.client.Dispatch("Excel.Application")
xcl.Visible = 0 # 应用程序不显示
try:
wb = xcl.Workbooks.Open(filename, UpdateLinks=False, ReadOnly=False, Format=None, Password=pw_str)
except:
print("ERROR: Remove .xlsx file password [%s]" % (filename))
else:
xcl.DisplayAlerts = False # 提示信息不显示
if wb != None:
wb.SaveAs(filename, None, Password='', WriteResPassword='')
finally:
xcl.Quit()

后使用Password属性解决问题,代码如下:

def remove_xlsx_password(filename, pw_str):
xcl = win32com.client.Dispatch("Excel.Application")
xcl.Visible = 0 # 应用程序不显示
try:
wb = xcl.Workbooks.Open(filename, UpdateLinks=False, ReadOnly=False, Format=None, Password=pw_str)
except:
print("ERROR: Remove .xlsx file password [%s]" % (filename))
else:
xcl.DisplayAlerts = False # 提示信息不显示
if wb != None:
wb.Password = '' # 设置工作簿密码为空
wb.Save()
wb.Close()
# wb.SaveAs(filename, None, Password='', WriteResPassword='')
# 以上语句对于低版Office可适用,但对于高版Office会出现文件打开密码可修改,但无法清空的情况。
finally:
xcl.Quit()
...全文
540 回复 打赏 收藏 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

37,737

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • WuKongSecurity@BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧