以编程方式取消保护 Excel 文件

新手上路,请多包涵

我们从打开保护和写入保留保护的客户端获取 Excel 文件。我想删除保护,以便可以使用 python xlrd 模块打开 Excel 文件。我已经安装了 pywin32 包以通过 COM 访问 Excel 文件,我可以使用提供两个密码的程序打开它,保存并关闭文件而不会出现错误。我正在使用 MSDN 网络中描述的 Unprotect 命令,它们没有失败,但它们也没有删除保护。在我的程序完成后,保存的文件仍然需要两个密码才能打开它。这是我到目前为止所拥有的:

 import os, sys
impdir = "\\\\xxx.x.xx.x\\allshare\\IT\\NewBusiness\\Python_Dev\\import\\"
sys.path.append(impdir)
from UsefulFunctions import *
import win32com.client

wkgdir = pjoin(nbShare, 'NorthLake\_testing')
filename = getFilename(wkgdir, '*Collections*.xls*')
xcl = win32com.client.Dispatch('Excel.Application')
xcl.visible = True
pw_str = raw_input("Enter password: ")
try:
    wb = xcl.workbooks.open(filename, 0, False, None, pw_str, pw_str)
except Exception as e:
    print "Error:", str(e)
    sys.exit()
wb.Unprotect(pw_str)
wb.UnprotectSharing(pw_str)
wb.Save()
xcl.Quit()

任何人都可以为我提供正确的 unprotect 命令语法吗?

原文由 JimR 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 649
2 个回答

@Tim Williams 的建议奏效了。 (使用 SaveAs 并为 Password 和 WriteResPassword 参数传递空字符串。)我在文件名后的“格式”参数中使用了“无”,并且我使用了一个新的文件名来防止 Excel 提示我询问是否可以覆盖现有文件。我还发现我不需要使用这种方法的 wb.Unprotect 和 wb.UnprotectSharing 调用。

原文由 JimR 发布,翻译遵循 CC BY-SA 3.0 许可协议

这个功能对我有用

def Remove_password_xlsx(filename, pw_str):
    xcl = win32com.client.Dispatch("Excel.Application")
    wb = xcl.Workbooks.Open(filename, False, False, None, pw_str)
    xcl.DisplayAlerts = False
    wb.SaveAs(filename, None, '', '')
    xcl.Quit()

原文由 Enoch Sit 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题