标签:Python
如果试图使用pandas读取使用密码加密的Excel文件,并收到以下消息:
这个消息表示试图在不提供密码的情况下读取使用密码加密的文件。在本文中,将展示如何将加密的Excel文件读入pandas。
库
最好的解决方案是使用msoffcrypto库。
使用pip进行安装:
pip install msoffcrypto-tool
将加密的Excel文件直接读取到Pandas
msoffcrypto库有一个load_key()方法来为Excel文件准备密码,然后decrypt()方法解锁文件并将其保存到磁盘。
由于希望将加密的Excel文件直接读取到pandas中,因此保存到磁盘将效率低下。因此,可以将文件内容临时写入内存缓冲区(RAM)。为此,需要使用io库。
import msoffcrypto
import io
import pandas as pd
temp= io.BytesIO()
io.BytesIO()允许将内容写入内存缓冲区(RAM),这有助于比写入磁盘更快地处理文件。
在示例中,密码是“123”,确保在测试此代码时将其替换为自己的密码。下面的代码片段使用“rb”模式以二进制格式打开加密的Excel文件“passwordfile.xlsx”,解锁该文件,然后将内容(Excel文件)保存到名为temp的内存缓冲区(RAM)位置。
with open(r’D:\test\passwordfile.xlsx’, ‘rb’) as f:
excel = msoffcrypto.OfficeFile(f)
excel.load_key(‘123’)
excel.decrypt(temp)
现在,这个临时文件是我们的目标Excel文件,密码被删除,可以继续使用正常的pd.excel()来读取它!
将代码放在一起
这是一个简短的脚本,用于将加密的Excel文件直接读取到pandas中。注意,在此过程中,既没有修改原始Excel文件,也没有在磁盘上创建不必要的文件。