我有這個從這里下載的 excel 檔案,我想將它讀入 pandas 資料框。如果我在 Excel 中打開檔案,它可以正常打開,不要求輸入密碼,但如果我嘗試修改它,它會要求輸入密碼。如果我嘗試使用以下代碼在 pandas 上打開檔案:
data_inctl = pd.read_excel(
INCTL_DATA_PATH,
sheet_name="Serie Histórica"
)
它給了我以下錯誤:
XLRDError: Workbook is encrypted
我嘗試了一些在這里找到的解決方案,但我沒有該檔案的密碼,所以它們都不起作用。
資料本身沒有加密,因為我可以在 excel 上很好地打開它。我也可以毫無問題地將資料從 Excel 復制并粘貼到另一個檔案中,但這不允許我自動化我的 ETL。有沒有辦法可以將這些資料放入 pandas 資料框中,即使該檔案受到保護不被修改?
uj5u.com熱心網友回復:
在閱讀了@zyndorsky 的評論并找到了這個包后,設法做到了:
>>> import pandas as pd
>>> import io
>>> import msoffcrypto
>>> protected_excel_filepath = '/tmp/INCTL_0222.xls'
>>> unprotected_excel_content = io.BytesIO()
>>> with open(protected_excel_filepath, 'rb') as f:
... msoffcryptoobj = msoffcrypto.OfficeFile(f)
... msoffcryptoobj.load_key(password="VelvetSweatshop")
... unprotected_excel_content = io.BytesIO()
... msoffcryptoobj.decrypt(unprotected_excel_content)
...
>>> data = pd.read_excel(unprotected_excel_content)
>>> print(data)
Unnamed: 0 Unnamed: 1 ... Unnamed: 10 Unnamed: 11
0 NaN NaN ... NaN NaN
1 NaN NaN ... NaN NaN
2 NaN NaN ... 50 km 0.234338
3 NaN NaN ... 400 km 0.229290
4 NaN NaN ... 800 km 0.226535
5 NaN NaN ... 2.400 km 0.224885
6 NaN NaN ... 6.000 km 0.224641
7 NaN NaN ... NaN NaN
...
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/452977.html
上一篇:為什么這個過濾函式回傳值錯誤?
下一篇:Excel-使用IF和OR
