使用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操作不一样,最好不用