标签:Python
如果碰到加密的Excel文件,则会很麻烦。在本文中,将展示如何使用Python删除Excel文件密码。
同样,如果收到很多加密的Excel文件,即使知道密码,也要在打开每个文件时都要输入密码,非常繁琐。如果能够自动处理,岂不更好!
库
要删除Excel文件的密码,将使用msoffcrypto库。可以使用pip来安装库,注意用于安装的名称是msoffcrypto-tool。
pip install msoffcrypto-tool
获取文件名
使用pathlib库获取所有Excel文件的文件路径。注意,.iterdir()将遍历文件夹中的所有内容,包括文件和目录。只需要添加核对只是抓取.xlsx文件。
pathlib.glob(‘*.xlsx’)方法返回与格式’*.xlsx’匹配的所有路径,即任何以’.xlsx’结尾的文件路径,或者说是Excel文件。
import pathlib
url= pathlib.Path(r’D:\test\remove_excel_password’)
excel_flies= list(url.glob(‘*.xlsx’))
使用Python删除Excel密码
msoffcrypto库有两个关键方法:load_key和decrypt。
load_key():准备密码
decrypt():通过删除密码解锁文件,然后将文件保存到磁盘
继续使用文件路径列表。注意,所有Excel文件都使用相同的密码“123”,确保在测试代码时将其替换为实际的密码。
注意,下面的函数将使用二进制模式“rb”在Python中打开每个密码加密的Excel文件。然后,它将删除密码(通过解密),并将文件保存到一个新的位置output_folder中。
def unlock(filename, passwd, output_folder):
temp = open(filename, ‘rb’)
excel = msoffcrypto.OfficeFile(temp)
excel.load_key(passwd)
out_path = pathlib.Path(output_foler)
if not out_path.exists():
out_path.mkdir()
with open(str(out_path/filename.name), ‘wb’)as f:
excel.decrypt(f)
temp.close()
因为使用的是pathlib,每个filename实际上都是一个pathlib对象,为了从对象中获取文件名,可以调用.name属性,返回文件名的字符串值。
注意,.load_key()方法只准备密码,而不会解锁文件。decrypt()解锁文件,然后将文件保存到磁盘。
将代码放在一起