旧版本excel文件pandas读取‘Workbook is encrypted’错误
使用pandas读取一个excel文件,出现‘Workbook is encrypted'错误,实际上文件没有加密码,而是设置了受保护的视图,pandas是使用xlrd模块读取excel文件,所以xlrd也是不行的
搜索发现一个模块可以对excel文件解密
pip install msoffcrypto-tool import msoffcrypto
#操作过程略
但是msoffcrypto对03版本的excel无效。
openpyxl也对03版本的excel无效。
最后的解决办法:用pywin32改变excel文件版本,然后解密,实际上改变文件版本后就可以直接读取了
安装:
pip install pywin32
操作:
import win32com.client as win32 import pandas as pd file_old = 'C:\\Users\\john\\Downloads\\20210226T000000.xls' #pywin32的路径分隔符是'\\',而不是'/'否则出错 wb=win32.DispatchEx('Excel.Application').Workbooks.Open(file_old) try: file_new='C:\\Users\\john\\Downloads\\20210226T000000.xlsx'#注意保存在根目录下可能需要管理权限,产生问题 wb.SaveAs(file_new,FileFormat=51) #51是新版版本xlsx文件,56是旧版本xls文件 finally: wb.Close() reader=pd.read_excel(file_new,sheet_name=0,header=0,dtype=str) print(reader)
目前不知道对于有密码的文件是否适用
电脑要安装office,2019可用,精简版不可用,WPS操作不一样,最好不用
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端