我想使用python打开受密码保护的xls或xlsx。通常我使用xlrd来处理xls或xlsx文件,但它无法打开受密码保护的excel文件。我尝试使用pywin32,但无法在Linux系统上安装它。
您可以使用我对类似问题的回答中概述的方法来完成此操作。
它不需要安装Excel,而且因为它是纯Python,所以它也是跨平台的!
msoffcrypto工具支持受密码保护(加密)的Microsoft Office文档,包括较旧的XLS二进制文件格式。
-
安装msoffcrypto工具:
pip install msoffcrypto-tool
-
您可以从命令行创建工作簿的未加密版本:
msoffcrypto-tool Myfile.xlsx Myfile-decrypted.xlsx -p "caa team"
-
或者,您可以使用msoffcrypto工具作为库。虽然可以像上面那样将未加密的版本写入磁盘,但您可能更喜欢在内存中创建一个解密的文件,并将其传递给您的Python Excel库(
openpyxl
、xlrd
等)。import io import msoffcrypto import openpyxl decrypted_workbook = io.BytesIO() with open('Myfile.xlsx', 'rb') as file: office_file = msoffcrypto.OfficeFile(file) office_file.load_key(password='caa team') office_file.decrypt(decrypted_workbook) # `filename` can also be a file-like object. workbook = openpyxl.load_workbook(filename=decrypted_workbook)