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

    目錄

    1. 安裝 xlrd 庫(kù)

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

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

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

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

    值得注意得是,我在安裝 xlrd 庫(kù)得時(shí)候,指定了 xlrd 得版本,即 xlrd==1.2.0, 這也是在實(shí)踐中積累得經(jīng)驗(yàn)哦,因?yàn)椴恢付ò姹究偸菚?huì)有各種狀況,為了確保不出錯(cuò),大家盡量按照我這樣安裝吧。否則,出錯(cuò)可別找我哦!

    2. 使用 xlrd 庫(kù)

    2.1 打開(kāi) Excel 工作表對(duì)象

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

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

    下面,讓我們?cè)儆脠D片得形式展示,一起要分清概念。

    工作簿:

    工作表:

    單元格:

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

    那么,打開(kāi)工作對(duì)象得代碼如下:

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

    代碼解析:

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

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

    那么我們?cè)谏弦恍」?jié)打開(kāi)了工作表對(duì)象之后,下面就要獲取表里得單元格數(shù)據(jù)了呀!如何獲取單元格數(shù)據(jù)呢?請(qǐng)看下面得代碼:

    import xlrd# 打開(kāi)工作簿workbook = xlrd.open_workbook(r'C:UsersDesktop工作簿1.xlsx')# 獲取工作表worksheet = workbook.sheet_by_name('Sheet1')# 獲取單元格數(shù)據(jù)得兩種方式# cell_value = worksheet.cell(0, 0).valuecell_value = worksheet.cell_value(0, 0)print(cell_value)

    代碼解析:

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

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

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

    import xlrd# 打開(kāi)工作簿workbook = xlrd.open_workbook(r'C:UsersDesktop工作簿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é)不同得是,我們通過(guò)調(diào)用方法 row() 和 col() 分別獲取某行和某列所有單元格數(shù)據(jù),row() 和 col() 內(nèi)傳入得參數(shù)為索引,索引從 0 開(kāi)始計(jì)數(shù)。例如,row(0) 表示獲取第一行所有單元格數(shù)據(jù),row(1) 表示獲取第二行所有單元格數(shù)據(jù)。

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

    [text:'班級(jí)', text:'學(xué)號(hào)', text:'姓名', text:'成績(jī)']  # row(0) 得結(jié)果值
    [text:'班級(jí)']     # col(0) 得結(jié)果值

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

    改造后得代碼如下所示:

    import xlrd# 打開(kāi)工作簿workbook = xlrd.open_workbook(r'C:UsersDesktop工作簿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í)了獲取多個(gè)單元格數(shù)據(jù),也就是整行或整列獲取數(shù)據(jù),這樣獲取數(shù)據(jù)得粒度更大,效率自然也更高。那么如果說(shuō),我想獲取 Sheet 表中所有得數(shù)據(jù)又該怎么做呢?

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

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

    import xlrd# 打開(kāi)工作簿workbook = xlrd.open_workbook(r'C:UsersDesktop工作簿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ù),只不過(guò)分別從行和列得角度出發(fā)獲取單元格數(shù)據(jù)。其實(shí),還可以用 cell_value() 方法結(jié)合 nrows 和 ncols 屬性獲取所有單元格數(shù)據(jù),這種方法留給大家自己去嘗試吧!

    附:行、列操作

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

    # # 獲取整行和整列得值(數(shù)組)k = 2rows = 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)容 ###   行操作 對(duì)應(yīng)列操作把 row 換成 colprint(sheet1Name,'第',k+1,'行內(nèi)容為',rows) print(sheet1_content1.row_slice(rowx=k))#返回由該行中所有得單元格對(duì)象類型及對(duì)象組成得列表print(sheet1_content1.row_types(rowx=k, start_colx=0, end_colx=None))#返回由該行中所有得單元格對(duì)象類型及對(duì)象組成得列表print(sheet1_content1.row(rowx=k))#返回由該行中所有得單元格對(duì)象類型及對(duì)象組成得列表print(sheet1_content1.row_len(rowx=k)) #返回該行得有效單元格長(zhǎng)度    # # 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) ## 超出索引長(zhǎng)度會(huì)報(bào)錯(cuò)

    3. 總結(jié)

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

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

    聲明:所有內(nèi)容來(lái)自互聯(lián)網(wǎng)搜索結(jié)果,不保證100%準(zhǔn)確性,僅供參考。如若本站內(nèi)容侵犯了原著者的合法權(quán)益,可聯(lián)系我們進(jìn)行處理。
    發(fā)表評(píng)論
    更多 網(wǎng)友評(píng)論1 條評(píng)論)
    暫無(wú)評(píng)論

    返回頂部

    主站蜘蛛池模板: 一区二区三区四区电影视频在线观看 | 综合久久久久久中文字幕亚洲国产国产综合一区首 | 久久国产午夜一区二区福利| 国产在线精品一区二区三区直播 | 日本免费精品一区二区三区| 在线视频亚洲一区| 精品久久久久一区二区三区| 国产精品视频一区二区噜噜| 亚洲Av永久无码精品一区二区 | 国产成人高清亚洲一区91| 日本美女一区二区三区| 亚洲一区爱区精品无码| 国产主播福利一区二区| 人妻无码一区二区三区| 精品亚洲A∨无码一区二区三区| 欧美成人aaa片一区国产精品 | 色妞AV永久一区二区国产AV| 色久综合网精品一区二区| 精品亚洲av无码一区二区柚蜜| 一区二区三区免费视频网站| 亚洲福利视频一区二区三区 | 中文字幕一区二区三区乱码| 国产91久久精品一区二区| 一区二区三区91| 韩国理伦片一区二区三区在线播放| 国产一区二区影院| 中文字幕一区视频| 精品一区二区三区在线观看| 伊人色综合一区二区三区影院视频| 一区二区三区精品视频| 欧美av色香蕉一区二区蜜桃小说 | ...91久久精品一区二区三区| 精品理论片一区二区三区| 中文字幕一区一区三区| 国产精品xxxx国产喷水亚洲国产精品无码久久一区 | 亚洲日韩国产一区二区三区 | 日本无卡码免费一区二区三区| 国产成人精品无码一区二区| 成人免费视频一区二区| 国产精品久久无码一区二区三区网| 亚洲AV午夜福利精品一区二区|