網(wǎng)站制作 信科網(wǎng)絡(luò)第三方推廣平臺(tái)
文章目錄
- 一、問題報(bào)錯(cuò)
- 二、報(bào)錯(cuò)原因
- 三、解決思路
- 四、解決方法
一、問題報(bào)錯(cuò)
在處理Excel文件時(shí),特別是當(dāng)我們使用Python的xlrd庫來讀取.xlsx格式的文件,偶爾會(huì)遇到這樣一個(gè)錯(cuò)誤:“xlrd.biffh.XLRDError: Excel xlsx file; not supported”。這個(gè)錯(cuò)誤明確地告訴我們,嘗試操作的.xlsx文件不被支持。此時(shí),你可能會(huì)感到困惑,因?yàn)?xlsx是Excel中非常常見的一種格式。
Traceback (most recent call last):File "D:\WorkSpace-Python\Test\read_file.py", line 5, in <module>data = pd.read_excel('D:\WorkSpace-Python\Test\demo.xlsx')File "D:\App\python\python2.7.13\Python27\lib\site-packages\pandas\util\_decorators.py", line 188, in wrapperreturn func(*args, **kwargs)File "D:\App\python\python2.7.13\Python27\lib\site-packages\pandas\util\_decorators.py", line 188, in wrapperreturn func(*args, **kwargs)File "D:\App\python\python2.7.13\Python27\lib\site-packages\pandas\io\excel.py", line 350, in read_excelio = ExcelFile(io, engine=engine)File "D:\App\python\python2.7.13\Python27\lib\site-packages\pandas\io\excel.py", line 653, in __init__self._reader = self._engines[engine](self._io)File "D:\App\python\python2.7.13\Python27\lib\site-packages\pandas\io\excel.py", line 424, in __init__self.book = xlrd.open_workbook(filepath_or_buffer)File "D:\App\python\python2.7.13\Python27\lib\site-packages\xlrd\__init__.py", line 170, in open_workbookraise XLRDError(FILE_FORMAT_DESCRIPTIONS[file_format]+'; not supported')
xlrd.biffh.XLRDError: Excel xlsx file; not supported
二、報(bào)錯(cuò)原因
錯(cuò)誤的根本原因在于xlrd庫的一個(gè)重要更新。從版本2.0.0開始,xlrd庫默認(rèn)只支持舊的.xls格式,而不再支持較新的.xlsx格式。這個(gè)更改主要是出于安全和維護(hù)的考慮,但它確實(shí)給很多依賴xlrd處理.xlsx文件的開發(fā)者帶來了挑戰(zhàn)。
三、解決思路
針對(duì)這一問題,我們可以采取以下策略:
- 退回舊版本: 暫時(shí)將xlrd庫降級(jí)到1.2.0版本,該版本仍然支持.xlsx格式。
- 使用openpyxl庫:對(duì)于.xlsx文件格式,openpyxl是一個(gè)更合適的選擇,因?yàn)樗鼘iT用于處理.xlsx文件。
- 使用pandas庫:如果你已經(jīng)在使用pandas進(jìn)行數(shù)據(jù)分析,那么可以直接通過pandas來讀取.xlsx文件,pandas背后會(huì)使用openpyxl或其他庫作為引擎。
四、解決方法
方法一: 退回舊版本xlrd:如果你的項(xiàng)目臨時(shí)無法遷移到其他庫,可以考慮將xlrd庫退回到支持.xlsx的最后一個(gè)版本(通常是1.2.0),記住,長期依賴過時(shí)的庫可能會(huì)帶來安全和兼容性風(fēng)險(xiǎn)。
pip uninstall xlrd
pip install xlrd==1.2.0
方法二:使用openpyxl庫,openpyxl是處理.xlsx文件的理想選擇。首先,需要安裝openpyxl:
pip install openpyxl
讀取.xlsx文件:
from openpyxl import load_workbookworkbook = load_workbook(filename='your_file.xlsx')
sheet = workbook.active
for row in sheet.iter_rows(values_only=True):print(row)
方法三: 使用pandas庫,pandas提供了一個(gè)高級(jí)接口來讀取.xlsx文件,背后可以選擇多種引擎,包括openpyxl。
pip install pandas openpyxl
讀取.xlsx文件:
import pandas as pddf = pd.read_excel('your_file.xlsx', engine='openpyxl')
print(df)
參考文章:https://blog.csdn.net/FMC_WBL/article/details/136123957