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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM