最近接触到的一个项目要需要读入带密码的excel文件,在网上找了很多方法,有一些方法是错误的,还有些方法比较繁琐。我在本文使用pandas来读取带密码的excel文件。pandas读取带密码的Excel文件,需要借助其他的库,因为pandas本身不支持读取加密的Excel文件。
直接读取带密码的文件(会报错)
现在一个加密文档,密码是123456
import pandas as pd
df1=pd.read_excel('测试加密文档.xlsx')
df1
pandas是无法读取这个加密的excel文件的,需要使用其他库来协助完成读取带密码的excel数据。
使用msoffcrypto来协助读取带密码的excel文件
msoffcrypto
msoffcrypto是一个开源的Python工具,专门用于解密Microsoft Office文档(如 .docx, .xlsx, .pptx 等)中的加密内容。
msoffcrypto安装
pip install msoffcrypto-tool
读取带密码的excel数据
import io
import pandas as pd
import msoffcrypto
passwd = '123456'
decrypted_workbook = io.BytesIO()
with open('测试加密文档.xlsx', 'rb') as file:
office_file = msoffcrypto.OfficeFile(file)
office_file.load_key(password=passwd)
office_file.decrypt(decrypted_workbook)
df = pd.read_excel(decrypted_workbook, sheet_name='文档1')
如果大家还想进一步了解,尝试更多的方法,可以参考以下链接:https://stackoverflow.com/questions/15285068/from-password-protected-excel-file-to-pandas-dataframe