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