欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

利用Python第三方庫xlrd讀取Excel中數(shù)據(jù)實例代碼

 更新時間:2022年07月22日 14:25:10   作者:華仔仔coding  
python操作excel主要用到xlrd和xlwt這兩個庫,即xlrd是讀excel,xlwt是寫excel的庫,下面這篇文章主要給大家介紹了關(guān)于利用Python第三方庫xlrd讀取Excel中數(shù)據(jù)的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下

1. 安裝 xlrd 庫

Python 讀取 Excel 中的數(shù)據(jù)主要用到 xlrd 第三方庫。xlrd 其實就是兩個單詞的簡化拼接,我們可以把它拆開來看,xl 代表 excel, rd 代表 read, 合并起來就是 xlrd, 意思就是讀 excel 的第三方庫。

這種命名風(fēng)格也正是我們推薦使用的,要做到 “顧名思義”,不要使用晦澀難懂,與所實現(xiàn)的功能毫無關(guān)聯(lián)的名稱。

OK, 廢話不多說了,下面我們就著手安裝 xlrd 庫,pip 命令如下:

pip install xlrd==1.2.0 -i https://mirrors.aliyun.com/pypi/simple

值得注意的是,我在安裝 xlrd 庫的時候,指定了 xlrd 的版本,即 xlrd==1.2.0, 這也是在實踐中積累的經(jīng)驗哦,因為不指定版本總是會有各種狀況,為了確保不出錯,大家盡量按照我這樣安裝吧。否則,出錯可別找我哦!

2. 使用 xlrd 庫

2.1 打開 Excel 工作表對象

(咳咳,戰(zhàn)術(shù)咳嗽!) 首先,我們先梳理一下思路,把概念搞清楚。什么概念呢?就是大家知道什么是工作簿,什么是工作表,什么是單元格嗎?

平時我們說的 Excel 工作表文件,其實嚴(yán)格來說它是個工作簿。然后打開工作簿,里面有多個 Sheet, 我們把這個稱作 ”工作表“。之后,我們的數(shù)據(jù)是放在單元格里面的。

下面,讓我們再用圖片的形式展示,一起要分清概念。

工作簿:

工作表:

單元格:

好的,那么使用 xlrd 讀取 Excel 表中的數(shù)據(jù)的時候也應(yīng)按照:工作簿 -> 工作表 -> 單元格,這樣的過程去讀取數(shù)據(jù)的。

那么,打開工作對象的代碼如下:

import xlrd

# 打開工作簿
workbook = xlrd.open_workbook(r'C:\Users\Desktop\工作簿1.xlsx')
# 三種方式獲取工作表
# worksheet = workbook.sheet_by_index(0)
# worksheet = workbook.sheets()[0]        
worksheet = workbook.sheet_by_name('Sheet1')

代碼解析:

  1. 首先導(dǎo)入安裝的第三方庫 xlrd.
  2. 之后,使用 xlrd 庫下的方法 open_workbook(), 打開一個工作簿,方法里的參數(shù)為工作簿的路徑。
  3. 最后,根據(jù)拿到的工作簿對象,指定獲取的工作表。當(dāng)然了,獲取工作表的方法有三種,分別是根據(jù)索引和根據(jù)工作表名稱獲取,索引是從0開始的。只要使用一種方式即可,這里我推薦使用根據(jù)工作表名稱獲取。

2.2 讀取單個單元格數(shù)據(jù)

那么我們在上一小節(jié)打開了工作表對象之后,下面就要獲取表里的單元格數(shù)據(jù)了呀!如何獲取單元格數(shù)據(jù)呢?請看下面的代碼:

import xlrd

# 打開工作簿
workbook = xlrd.open_workbook(r'C:\Users\Desktop\工作簿1.xlsx')
# 獲取工作表
worksheet = workbook.sheet_by_name('Sheet1')
# 獲取單元格數(shù)據(jù)的兩種方式
# cell_value = worksheet.cell(0, 0).value
cell_value = worksheet.cell_value(0, 0)
print(cell_value)

代碼解析:

獲取單元格數(shù)據(jù)的方法也很簡單。這里提供了兩種方法,都可以獲取單元格數(shù)據(jù),大家只要根據(jù)自己習(xí)慣,掌握一種即可。例如,我這里使用的是 cell_value() 方法,方法里傳遞的是單元格的索引。單元格的索引是二維的,第一個參數(shù)是所在行,第二個參數(shù)是所在列。需要注意的是,所有的索引都是從 0 開始計數(shù)的。

2.3 讀取多個單元格數(shù)據(jù)

上一小節(jié)中,我們使用了 cell_value() 方法獲取單個單元格數(shù)據(jù),但是這種方式未免效率過于低下了,現(xiàn)在我們想一次性獲取整行或者整列的數(shù)據(jù),該如何去做呢 ?請看下面的代碼:

import xlrd

# 打開工作簿
workbook = xlrd.open_workbook(r'C:\Users\Desktop\工作簿1.xlsx')
# 獲取工作表
worksheet = workbook.sheet_by_name('Sheet1')
# 獲取第一行所有單元格數(shù)據(jù)
row_value = workbookt.row(0)
# 獲取第一列所有單元格數(shù)據(jù)
col_value = workbook.col(0)

代碼解析:

與 2.2 小節(jié)不同的是,我們通過調(diào)用方法 row() 和 col() 分別獲取某行和某列所有單元格數(shù)據(jù),row() 和 col() 內(nèi)傳入的參數(shù)為索引,索引從 0 開始計數(shù)。例如,row(0) 表示獲取第一行所有單元格數(shù)據(jù),row(1) 表示獲取第二行所有單元格數(shù)據(jù)。

那么我們運行上面的代碼段,運行結(jié)果如下所示:

[text:'班級', text:'學(xué)號', text:'姓名', text:'成績']  # row(0) 的結(jié)果值
[text:'班級']     # col(0) 的結(jié)果值

通過觀察運行結(jié)果,我們發(fā)現(xiàn)運行的結(jié)果都是以列表的形式展示的。值得注意的是,列表的數(shù)值并不是字典格式,盡管這和 Python 中字典格式完全一樣,實際上列表中元素的類型應(yīng)該是 <class 'xlrd.sheet.Cell'>, 這是 xlrd 中的 cell 對象,即單元格對象。單元格對象有 value 屬性,因此我們可以通過遍歷列表獲得每一個 cell 對象,然后通過 value 屬性取出每一個 cell 的值。

改造后的代碼如下所示:

import xlrd

# 打開工作簿
workbook = xlrd.open_workbook(r'C:\Users\Desktop\工作簿1.xlsx')
# 獲取工作表
worksheet = workbook.sheet_by_name('Sheet1')

for i in worksheet.row(0):
    print(i.value)  # 獲取單元格數(shù)據(jù)
for i in worksheet.col(0):
    print(i.value)  # 獲取單元格數(shù)據(jù)

2.3 讀取所有單元格數(shù)據(jù)

在上一小節(jié)中,我們學(xué)習(xí)了獲取多個單元格數(shù)據(jù),也就是整行或整列獲取數(shù)據(jù),這樣獲取數(shù)據(jù)的粒度更大,效率自然也更高。那么如果說,我想獲取 Sheet 表中所有的數(shù)據(jù)又該怎么做呢?

要想獲取 Sheet 表中所有單元格數(shù)據(jù),就得知道 Sheet 表有多少行以及多少列。這樣,我們根據(jù)行數(shù)和列數(shù),才能獲取 Sheet 表所有數(shù)據(jù)啊。xlrd 中 worksheet 對象有兩個屬性 nrows 和 ncols, 它們分別表示當(dāng)前的 Sheet 表的行數(shù)和列數(shù)。

獲取所有單元格數(shù)據(jù)的代碼如下所示:

import xlrd

# 打開工作簿
workbook = xlrd.open_workbook(r'C:\Users\Desktop\工作簿1.xlsx')
# 獲取工作表
worksheet = workbook.sheet_by_name('Sheet1')
# 根據(jù)行獲取所有單元格數(shù)據(jù)
for row in range(worksheet.nrows):
    for i in worksheet.row(row):
        print(i.value)
# 根據(jù)列獲取單元格數(shù)據(jù)  
for col in range(worksheet.ncols):
    for i in worksheet.col(col):
        print(i.value)

代碼解析:

上面的代碼中,輸出的結(jié)果應(yīng)該都是所有單元格數(shù)據(jù),只不過分別從行和列的角度出發(fā)獲取單元格數(shù)據(jù)。其實,還可以用 cell_value() 方法結(jié)合 nrows 和 ncols 屬性獲取所有單元格數(shù)據(jù),這種方法留給大家自己去嘗試吧!

附:行、列操作

獲取全行數(shù)據(jù)、切片、全行類型、行的有效單元格數(shù)等

# # 獲取整行和整列的值(數(shù)組)
k = 2
rows = sheet1_content1.row_values(k); # 獲取第3行內(nèi)容  row_values(rowx=2, start_colx=0, end_colx=None)
cols = sheet1_content1.col_values(k); # 獲取第3列內(nèi)容
 
###   行操作 對應(yīng)列操作把 row 換成 col
print(sheet1Name,'第',k+1,'行內(nèi)容為',rows) 
print(sheet1_content1.row_slice(rowx=k))#返回由該行中所有的單元格對象類型及對象組成的列表
print(sheet1_content1.row_types(rowx=k, start_colx=0, end_colx=None))#返回由該行中所有的單元格對象類型及對象組成的列表
print(sheet1_content1.row(rowx=k))#返回由該行中所有的單元格對象類型及對象組成的列表
print(sheet1_content1.row_len(rowx=k)) #返回該行的有效單元格長度
    # # 5. 獲取單元格內(nèi)容(三種方式)
print(sheet1_content1.cell(0, 1).value)
print(sheet1_content1.cell_value(0, 1))
print(sheet1_content1.row(0)[1].value)
# print(sheet1_content1.row(10)[10].value) ## 超出索引長度會報錯

3. 總結(jié)

通過上面的學(xué)習(xí),相信大家對 xlrd 第三方庫的安裝以及使用第三方庫讀取 Excel 中的數(shù)據(jù)的方法有了一定的掌握。學(xué)習(xí)了讀取操作之后,可以通過下一篇博客《使用 Python 第三方庫 xlwt 寫入數(shù)據(jù)到 Excel 工作表》學(xué)習(xí)向 Excel 工作表寫入數(shù)據(jù)。

到此這篇關(guān)于利用Python第三方庫xlrd讀取Excel中數(shù)據(jù)的文章就介紹到這了,更多相關(guān)Python xlrd讀取Excel數(shù)據(jù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • linux環(huán)境打包python工程為可執(zhí)行程序的過程

    linux環(huán)境打包python工程為可執(zhí)行程序的過程

    本次需求,在ubuntu上面開發(fā)的python代碼程序需要打包成一個可執(zhí)行程序然后交付給甲方,因為不能直接給源碼給甲方,所以尋找方法將python開發(fā)的源碼打包成一個可執(zhí)行程序,本次在ubuntu上打包python源碼的方法和在window上打包的有點類似,感興趣的朋友跟隨小編一起看看吧
    2024-01-01
  • 在python中利用GDAL對tif文件進行讀寫的方法

    在python中利用GDAL對tif文件進行讀寫的方法

    今天小編就為大家分享一篇在python中利用GDAL對tif文件進行讀寫的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11
  • python數(shù)據(jù)可視化Pyecharts庫sankey修改桑葚圖顏色

    python數(shù)據(jù)可視化Pyecharts庫sankey修改桑葚圖顏色

    這篇文章主要介紹了python數(shù)據(jù)化Pyecharts庫sankey修改桑葚圖顏色,文中有之前繪制桑葚圖教程鏈接,本文就來修改一下桑葚圖的顏色,有需要的朋友歡迎參閱借鑒
    2021-09-09
  • python多線程同步售票系統(tǒng)

    python多線程同步售票系統(tǒng)

    這篇文章主要介紹了python多線程同步售票系統(tǒng),文章基于python的相關(guān)資料展開詳細的多線程同步售票系統(tǒng)介紹,感興趣的小伙伴可以參考一下
    2022-05-05
  • Python使用ntplib庫同步校準(zhǔn)當(dāng)?shù)貢r間的方法

    Python使用ntplib庫同步校準(zhǔn)當(dāng)?shù)貢r間的方法

    NTP網(wǎng)絡(luò)時間協(xié)議其實大家平時或多或少都能接觸到,包括Windows在內(nèi)的操作系統(tǒng)中的很多Internet時間同步功能都是在NTP的基礎(chǔ)上來做,這里我們來看一下Python使用ntplib庫同步校準(zhǔn)當(dāng)?shù)貢r間的方法
    2016-07-07
  • python僵尸進程產(chǎn)生的原因

    python僵尸進程產(chǎn)生的原因

    這篇文章主要給大家講解的是在Python中是如何產(chǎn)生僵尸進程的,以及如何清除僵尸進程的方法,有需要的小伙伴可以參考下
    2017-07-07
  • Python 加密的實例詳解

    Python 加密的實例詳解

    這篇文章主要介紹了 Python 加密的實例詳解的相關(guān)資料,這里提供了兩種實現(xiàn)方法,需要的朋友可以參考下
    2017-10-10
  • python實現(xiàn)樸素貝葉斯算法

    python實現(xiàn)樸素貝葉斯算法

    這篇文章主要為大家詳細介紹了Python實現(xiàn)樸素貝葉斯算法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • python numpy中mat和matrix的區(qū)別

    python numpy中mat和matrix的區(qū)別

    這篇文章主要介紹了python numpy中mat和matrix的區(qū)別,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • NumPy索引與切片的用法示例總結(jié)

    NumPy索引與切片的用法示例總結(jié)

    numpy 數(shù)組索引是一個大話題,有很多種方式可以讓你選中數(shù)據(jù)的子集或某個單個元素,一維數(shù)組比較簡單,看起來和 python 的列表很類似,這篇文章主要給大家介紹了關(guān)于NumPy索引與切片用法的相關(guān)資料,需要的朋友可以參考下
    2021-07-07

最新評論