大家好,我是Python進階者。
一、前言
前幾天在Python最強王者交流羣【wen】問了一個Python處理Excel加密文件讀取問題。問題如下:
請教:讀取設置了密碼保護的exlce文件,df = pd.read_excel(file,password='12345678')
報錯:got an unexpected keyword argument "password"
目前的解決方法是通過msoffcrypto模塊生成新的文件再進行讀取,有沒有更簡單點的方法呢?
二、實現過程
這裏【隔壁😼山楂】指出:好像都差不多麻煩。
# pip install pandas xlwings,除此之外還要求電腦上有安裝可以打開Excel文件的軟件
import pandas as pd
import xlwings
app = xlwings.App(visible=False, add_book=False)
wb = app.books.open(file, password='12345678')
sheet = wb.sheets[0]
df = sheet['A1'].options(pd.DataFrame, index=False, expand='table').value
app.quit()
後來【瑜亮老師】也給了一個代碼:
import msoffcrypto
import io
import pandas as pd
decrypted = io.BytesIO()
with open("encrypted.xlsx", "rb") as f:
file = msoffcrypto.OfficeFile(f)
file.load_key(password="Passw0rd")
file.decrypt(decrypted)
df = pd.read_excel(decrypted)
print(df)
@wen 可以試試這個庫
乍一看,好像和粉絲的代碼差不多,其實不同,這裏【巭孬🕷】指出粉絲的代碼是生成新文件再讀取,瑜亮老師的是直接從內存裏面讀取,不用生成新文件。
順利地解決了粉絲的問題。
如果你也有類似這種Python相關的小問題,歡迎隨時來交流羣學習交流哦,有問必答!
三、總結
大家好,我是Python進階者。這篇文章主要盤點了一個Python處理Excel加密文件讀取的問題,文中針對該問題,給出了具體的解析和代碼實現,幫助粉絲順利解決了問題。
最後感謝粉絲【wen】提出的問題,感謝【隔壁😼山楂】、【瑜亮老師】、【巭孬🕷】給出的思路,感謝【莫生氣】等人蔘與學習交流。
【提問補充】溫馨提示,大家在羣裏提問的時候。可以注意下面幾點:如果涉及到大文件數據,可以數據脫敏後,發點demo數據來(小文件的意思),然後貼點代碼(可以複製的那種),記得發報錯截圖(截全)。代碼不多的話,直接發代碼文字即可,代碼超過50行這樣的話,發個.py文件就行。