Linux环境下使用Python解密XLS文件供pandas读取的问题咨询
Linux环境下加密XLS文件解密并读取为pandas DataFrame解决方案
方案1:LibreOffice 无头模式解密(通用兼容)
该方案兼容绝大多数加密的XLS/XLSX格式文件,无需依赖Windows专属组件,是目前测试下来成功率最高的方案:
- 首先安装LibreOffice Calc组件(多数Linux发行版默认预装,未安装可通过对应包管理器安装)
Debian/Ubuntu 系列发行版执行:sudo apt install libreoffice-calc
RHEL/CentOS/Fedora 系列发行版执行:sudo dnf install libreoffice-calc - 执行命令解密目标加密文件:
如果不需要修改输出格式,也可以将libreoffice --headless --password 你的文件密码 --convert-to xlsx --outdir ./output encrypted_input.xls--convert-to xlsx替换为--convert-to xls,输出未加密的XLS格式文件 - 解密完成后直接用pandas读取输出的未加密文件即可:
import pandas as pd df = pd.read_excel("./output/encrypted_input.xlsx")
提示:即使文件同时设置了打开密码和修改权限密码,该命令也可以正常完成解密,无需额外参数。
方案2:加密兼容版xlrd读取(仅适用于97-2003格式旧版XLS)
如果你的目标文件是旧版97-2003格式的XLS文件,可以直接使用支持解密的xlrd衍生包读取,无需额外转换步骤:
- 安装支持加密XLS读取的xlrd衍生包:
pip install xlrd-decrypted - 直接通过pandas传入密码读取文件:
import pandas as pd df = pd.read_excel("encrypted_input.xls", engine="xlrd", password="你的文件密码")
注意:该方案不支持Office 2007及以后版本生成的XLSX格式文件,仅兼容旧版XLS格式
内容的提问来源于stack exchange,提问作者firstpp
相关产品推荐
相关产品推荐

