使用 Python 的第三方庫(kù) xlrd 讀取 Excel 文件的詳細(xì)過(guò)程
使用 Python 的第三方庫(kù) xlrd 讀取 Excel 文件
一、安裝 xlrd 庫(kù)
xlrd是讀Excel的庫(kù),xlrd是第三方庫(kù),因此需要先安裝才能使用。在Windows命令行窗口輸入如下命令安裝 xlrd庫(kù):
C:\Users\Administrator>pip install xlrd Collecting xlrd Downloading xlrd-2.0.2-py2.py3-none-any.whl.metadata (3.5 kB) Downloading xlrd-2.0.2-py2.py3-none-any.whl (96 kB) Installing collected packages: xlrd Successfully installed xlrd-2.0.2 [notice] A new release of pip is available: 25.2 -> 25.3 [notice] To update, run: python.exe -m pip install --upgrade pip
對(duì)pip包進(jìn)行更新:
C:\Users\Administrator>python.exe -m pip install --upgrade pip
Requirement already satisfied: pip in c:\users\administrator\appdata\local\programs\python\python313\lib\site-packages (25.2)
Collecting pip
Downloading pip-25.3-py3-none-any.whl.metadata (4.7 kB)
Downloading pip-25.3-py3-none-any.whl (1.8 MB)
---------------------------------------- 1.8/1.8 MB 4.6 MB/s 0:00:00
Installing collected packages: pip
Attempting uninstall: pip
Found existing installation: pip 25.2
Uninstalling pip-25.2:
Successfully uninstalled pip-25.2
Successfully installed pip-25.3由于所安裝的第三方庫(kù)默認(rèn)是在國(guó)外的服務(wù)器上,所以可能會(huì)出現(xiàn)安裝速度比較慢的情況。此時(shí)可以嘗試使用國(guó)內(nèi)鏡像源的方式進(jìn)行安裝。國(guó)內(nèi)鏡像源網(wǎng)址如下:
清華大學(xué):https://pypi.tuna.tsinghua.edu.cn/simple
阿里云:http:/mirrors.aliyun.com/pypi/simple
鏡像源使用方式:在使用pip時(shí)添加參數(shù)-i https://pypi.tuna.tsinghua.edu.cn/simple
例如:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple xlrd
二、使用 xlrd 庫(kù)讀取 Excel 文件
1、打開(kāi) Excel 工作表
理解工作簿、工作表、單元格區(qū)域、單元格等概念。
import xlrd
# 使用 open_workbook 加載磁盤(pán)中的Excel文件
excelbook=xlrd.open_workbook(r"d:/資產(chǎn)清單.xlsx")
# 執(zhí)行以上代碼時(shí)程序報(bào)如下錯(cuò)誤:
File "C:/Users/Administrator/AppData/Local/Programs/Python/Python313/aa.py", line 2, in <module>
excelbook=xlrd.open_workbook(r"d:/資產(chǎn)清單.xlsx")
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python313\Lib\site-packages\xlrd\__init__.py", line 170, in open_workbook
raise XLRDError(FILE_FORMAT_DESCRIPTIONS[file_format]+'; not supported')
xlrd.biffh.XLRDError: Excel xlsx file; not supported在 CSDN 搜索,給出的原因如下:通常是由于當(dāng)前 Python 中的 xlrd 版本過(guò)高,高版本下刪除了對(duì)應(yīng)的 .xlsx 讀取方法,或者 xlrd 更新到了 2.0.1 版本,只支持 .xls 文件。
解決方法為:重裝指定版本的 xlrd。在命令行中先卸載現(xiàn)有的 xlrd,再安裝指定版本的 xlrd。
C:\Users\Administrator>pip uninstall xlrd
Found existing installation: xlrd 2.0.2
Uninstalling xlrd-2.0.2:
Would remove:
c:\users\administrator\appdata\local\programs\python\python313\lib\site-packages\xlrd-2.0.2.dist-info\*
c:\users\administrator\appdata\local\programs\python\python313\lib\site-packages\xlrd\*
c:\users\administrator\appdata\local\programs\python\python313\scripts\runxlrd.py
Proceed (Y/n)? y
Successfully uninstalled xlrd-2.0.2
C:\Users\Administrator>pip install xlrd==1.2.0
Collecting xlrd==1.2.0
Downloading xlrd-1.2.0-py2.py3-none-any.whl.metadata (1.3 kB)
Downloading xlrd-1.2.0-py2.py3-none-any.whl (103 kB)
Installing collected packages: xlrd
Successfully installed xlrd-1.2.0重新編寫(xiě)代碼,加載 Excel 文件,獲取工作表中的數(shù)據(jù)。
加載 Excel 文件,查看對(duì)象類(lèi)型。代碼如下:
import xlrd # 使用 open_workbook 加載磁盤(pán)中的Excel文件 excelbook=xlrd.open_workbook(r"d:/資產(chǎn)清單.xlsx") print(type(excelbook)) print(excelbook) 程序運(yùn)行結(jié)果為: <class 'xlrd.book.Book'> <xlrd.book.Book object at 0x00000215C84C7B60>
獲取工作表對(duì)象信息。代碼如下:
import xlrd
excelbook=xlrd.open_workbook(r"d:/資產(chǎn)清單.xlsx")
# 按照工作表的序號(hào)獲取第一個(gè)工作表對(duì)象信息
sht1=excelbook.sheet_by_index(0)
# 按照工作表的名稱(chēng)獲取工作表對(duì)象信息
sht2=excelbook.sheet_by_name("總資產(chǎn)")
# 獲取所有的工作表信息,保存到一個(gè)列表中。
shts=excelbook.sheets()
# 獲取列表中的第二個(gè)元素,即第二個(gè)工作表對(duì)象信息
sht3=shts[1]
print(type(sht1))
print(sht1)
print(sht2)
print(type(shts))
print(shts)
print(sht3)
程序運(yùn)行結(jié)果為:
<class 'xlrd.sheet.Sheet'>
<xlrd.sheet.Sheet object at 0x000001A8AB867E00>
<xlrd.sheet.Sheet object at 0x000001A8AB867E00>
<class 'list'>
[<xlrd.sheet.Sheet object at 0x000001A8AB867E00>, <xlrd.sheet.Sheet object at 0x000001A8AB94C2D0>]
<xlrd.sheet.Sheet object at 0x000001A8AB94C2D0>2、讀取單個(gè)單元格的信息
獲取單元格數(shù)據(jù)有兩種方式:一是使用cell_value函數(shù)直接返回單元格的數(shù)據(jù),該函數(shù)傳遞兩個(gè)參數(shù):?jiǎn)卧駭?shù)值所在的行號(hào)和列號(hào)。另一種是使用cell函數(shù),該函數(shù)仍然需要傳遞兩個(gè)參數(shù):行號(hào)和列號(hào),但該函數(shù)返回的是一個(gè)單元格對(duì)象,需要使用該對(duì)象的value屬性返回單元格中的數(shù)據(jù)。
常用的單元格數(shù)據(jù)類(lèi)型包含如下幾種:
0:empty——空
1:string——文本
2:number——數(shù)值
3:date——日期
4:boolean——邏輯值
5:error——錯(cuò)誤
6:blank——空格
例如:
import xlrd excelbook=xlrd.open_workbook(r"d:/資產(chǎn)清單.xlsx") # 獲取第一個(gè)工作表對(duì)象信息 sht1=excelbook.sheets()[0] # 獲取第3行第2列的單元格的內(nèi)容 x=sht1.cell(2,1).value print(x) print(type(x)) # 獲取第3行第6列的單元格的內(nèi)容 x=sht1.cell_value(2,5) print(x) print(type(x)) 程序運(yùn)行結(jié)果為: 家具 <class 'str'> 700.0 <class 'float'>
3、讀取多個(gè)單元格的信息
使用工作表的nrows屬性可以獲取工作表總的有效行數(shù),ncols屬性可以獲取工作表總的有效列數(shù)。
import xlrd excelbook=xlrd.open_workbook(r"d:/資產(chǎn)清單.xlsx") rows=excelbook.sheets()[0].nrows cols=excelbook.sheets()[0].ncols print(rows) print(cols) 程序運(yùn)行結(jié)果為: 7 9
使用row(n)函數(shù)可以獲取第n行數(shù)據(jù),使用col(n)函數(shù)可以獲取第n列數(shù)據(jù)。
import xlrd
excelbook=xlrd.open_workbook(r"d:/資產(chǎn)清單.xlsx")
row=excelbook.sheets()[0].row(2)
print(row)
print(type(row))
print("==="*20)
print(row[1])
print(type(row[1]))
print("==="*20)
col=excelbook.sheets()[0].col(3)
print(col)
print(type(col))
程序運(yùn)行結(jié)果為:
[number:2.0, text:'家具', text:'JJ2020021492', text:'目錄柜', text:'50斗', number:700.0, text:'經(jīng)濟(jì)與管理學(xué)院辦公室', text:'10號(hào)教學(xué)樓2樓10206', xldate:33329.0]
<class 'list'>
============================================================
text:'家具'
<class 'xlrd.sheet.Cell'>
============================================================
[text:'名稱(chēng)', text:'期刊架', text:'目錄柜', text:'雙面書(shū)桌', text:'雙面書(shū)桌', text:'雙面書(shū)桌', text:'雙面書(shū)桌']
<class 'list'>row(n)函數(shù)與 col(n)函數(shù)獲取到的數(shù)據(jù)是一個(gè)列表,列表中元素的數(shù)據(jù)類(lèi)型為<class 'xlrd.sheet.Cell'>,這是xlrd中的cell對(duì)象。也就是每一個(gè)列表元素表示的是一個(gè)單元格對(duì)象,單元格對(duì)象有value屬性。因此,可以遍歷列表獲得每一個(gè)單元格對(duì)象,再通過(guò)value屬性獲取每一個(gè)單元格的值。
代碼如下:
import xlrd
excelbook=xlrd.open_workbook(r"d:/資產(chǎn)清單.xlsx")
rows=excelbook.sheets()[0].nrows
for row_id in range(rows):
for cell in excelbook.sheets()[0].row(row_id):
print(cell.value,end=" ")
print("")
程序運(yùn)行結(jié)果為:
序號(hào) 類(lèi)別 編號(hào) 名稱(chēng) 型號(hào) 價(jià)值 領(lǐng)用單位 存放地 入庫(kù)日期
1.0 家具 JJ2020019977 期刊架 D型 590.0 經(jīng)濟(jì)與管理學(xué)院辦公室 10號(hào)教學(xué)樓2樓10206 33329.0
2.0 家具 JJ2020021492 目錄柜 50斗 700.0 經(jīng)濟(jì)與管理學(xué)院辦公室 10號(hào)教學(xué)樓2樓10206 33329.0
3.0 家具 JJ2020023833 雙面書(shū)桌 雙面 410.0 經(jīng)濟(jì)與管理學(xué)院辦公室 10號(hào)教學(xué)樓2樓10206 33329.0
4.0 家具 JJ2020023834 雙面書(shū)桌 雙面 410.0 經(jīng)濟(jì)與管理學(xué)院辦公室 10號(hào)教學(xué)樓2樓10206 33329.0
5.0 家具 JJ2020023835 雙面書(shū)桌 雙面 410.0 經(jīng)濟(jì)與管理學(xué)院辦公室 10號(hào)教學(xué)樓2樓10206 33329.0
6.0 家具 JJ2020023836 雙面書(shū)桌 雙面 410.0 經(jīng)濟(jì)與管理學(xué)院辦公室 10號(hào)教學(xué)樓2樓10206 33329.0 到此這篇關(guān)于使用 Python 的第三方庫(kù) xlrd 讀取 Excel 文件的詳細(xì)過(guò)程的文章就介紹到這了,更多相關(guān)python xlrd 讀取 Excel內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Python?xlrd實(shí)現(xiàn)從讀取Excel到高效數(shù)據(jù)提取的全面指南
- Python使用xlrd輕松讀取Excel文件的示例代碼
- Python使用xlrd模塊實(shí)現(xiàn)操作Excel讀寫(xiě)的方法匯總
- 使用Python的xlrd和xlwt操作Excel詳解
- Python讀取xlsx文件報(bào)錯(cuò):xlrd.biffh.XLRDError:?Excel?xlsx?file;not?supported問(wèn)題解決
- Python自動(dòng)化操作Excel方法詳解(xlrd,xlwt)
- python使用xlrd模塊讀取excel的方法實(shí)例
- 利用Python第三方庫(kù)xlrd讀取Excel中數(shù)據(jù)實(shí)例代碼
- python安裝第三方庫(kù)如xlrd的方法
相關(guān)文章
python統(tǒng)計(jì)文章中單詞出現(xiàn)次數(shù)實(shí)例
在本篇文章里小編給大家整理的是關(guān)于python統(tǒng)計(jì)文章中單詞出現(xiàn)次數(shù)實(shí)例,需要的朋友們參考學(xué)習(xí)下。2020-02-02
使用Python模擬操作windows應(yīng)用窗口詳解
在日常工作中,我們經(jīng)常遇到需要進(jìn)行大量重復(fù)性任務(wù)的情況,這篇文章將介紹如何使用 Python 模擬操作記事本,感興趣的小伙伴可以了解下2025-02-02
python中isdigit() isalpha()用于判斷字符串的類(lèi)型問(wèn)題
這篇文章主要介紹了python中isdigit() isalpha()用于判斷字符串的類(lèi)型問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11
對(duì)python數(shù)據(jù)清洗容易遇到的函數(shù)-re.sub bytes string詳解
今天小編就為大家分享一篇對(duì)python數(shù)據(jù)清洗容易遇到的函數(shù)-re.sub bytes string詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-07-07
16中Python機(jī)器學(xué)習(xí)類(lèi)別特征處理方法總結(jié)
類(lèi)別型特征(categorical?feature)主要是指職業(yè),血型等在有限類(lèi)別內(nèi)取值的特征。在這篇文章中,小編將給大家分享一下16種類(lèi)別特征處理方法,需要的可以參考一下2022-09-09
Windows上使用Python增加或刪除權(quán)限的方法
下面小編就為大家分享一篇Windows上使用Python增加或刪除權(quán)限的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-04-04
Python使用Flask創(chuàng)建 REST API的實(shí)現(xiàn)步驟
本文主要介紹了Python使用Flask創(chuàng)建 REST API的實(shí)現(xiàn)步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2026-02-02

