以编程方式取消保护Excel文件 [英] Unprotect an Excel file programmatically

查看:85
本文介绍了以编程方式取消保护Excel文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

We're getting an Excel file from a client that has open protection and Write Reserve protection turned on. I want to remove the protection so I can open the Excel file with the python xlrd module. I've installed the pywin32 package to access the Excel file through COM, and I can open it with my program supplying the two passwords, save, and close the file with no errors. I'm using Unprotect commands as described in MSDN network, and they're not failing, but they're also not removing the protection. The saved file still requires two passwords to open it after my program is done. Here's what I have so far:

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()

有人可以向我提供取消保护的正确语法吗?

Can anyone provide me the correct syntax for unprotect commands that will work?

推荐答案

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

The suggestion from @Tim Williams worked. (Use SaveAs and pass empty strings for the Password and WriteResPassword parameters.) I used 'None' for the 'format' parameter after filename, and I used a new filename to keep Excel from prompting me asking if OK to overwrite the existing file. I also found that I did not need the wb.Unprotect and wb.UnprotectSharing calls using this approach.

这篇关于以编程方式取消保护Excel文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆