Python3 xlrd庫(kù)基本教程

2022-07-19 09:39 更新

xlrd庫(kù)是一個(gè)python用于操作excel的第三方庫(kù)。它的主要功能是用來(lái)讀取excel。通常會(huì)與xlwt 、 xlutils組合進(jìn)行使用。 

注意!這里的操作excel,實(shí)際上與excel無(wú)關(guān),不需要下載excel,xlrd庫(kù)直接操作的是excel打開(kāi)的xls文件!
注意!xlrd庫(kù)只能讀取excel,不能修改,編寫excel!

注意!xlrd庫(kù)有專門的xlrd3版本,該版本是最新的xlrd庫(kù),提供了更新的支持(比如支持xlsx文件),只需要引用的時(shí)候使用?xlrd3?代替?xlrd?即可!

一 、xlrd的安裝

可以使用pip進(jìn)行安裝,這是最簡(jiǎn)單也是最普遍的安裝方式!

在cmd中輸入?pip install xlrd?即可安裝xlrd庫(kù)。

安裝成功后可以使用?pip list?來(lái)檢查是否正確安裝以及查看當(dāng)前的xlrd版本。

注意:xlrd較高版本中不支持.xlsx文件,可以手動(dòng)將版本降至更低的版本或者將.xlsx文件改為.xls文件,也可以采用最新的xlrd3代替xlrd
  • 先卸載掉現(xiàn)有的 xlrd —> pip uninstall xlrd
  • 重新安裝指定版本的 xlrd —> pip install xlrd == 1.2.0
接下來(lái)的文章由于此原因使用1.2.0版本的xlrd進(jìn)行介紹

二、xlrd模塊的使用

下面以這個(gè)工作簿為例

1、導(dǎo)入模塊

 import xlrd

2、打開(kāi)工作薄

# filename是文件的路徑名稱
workbook = xlrd.open_workbook(filename=r'C:\Users\Windows10\Desktop\xlsx文件.xlsx')

3、獲取需要操作的sheet表格(有三種方法)

①通過(guò)索引獲取

# 獲取第一個(gè)sheet表格
table = workbook.sheets()[0]

②通過(guò)索引順序獲取

# 通過(guò)索引順序獲取
table = workbook.sheet_by_index(0)

③通過(guò)sheet名稱獲取

# 通過(guò)sheet名稱獲取
table = workbook.sheet_by_name(sheet_name='Sheet1')

補(bǔ)充:獲取工作薄中所有sheet名稱

# 獲取工作薄中所有的sheet名稱
names = workbook.sheet_names()
print(names)

運(yùn)行結(jié)果:


三、行和列的操作

常用1:獲取sheet中有多少行和多少列

# 獲取sheet中有效行數(shù)
# 需要先指定sheet工作表
table = workbook.sheet_by_name(sheet_name='視頻課列表')
row = table.nrows
print(row)

運(yùn)行結(jié)果:



# 獲取sheet中有效列數(shù)
# 需要先指定sheet工作表
table = workbook.sheet_by_name(sheet_name='視頻課列表')
col = table.ncols
print(col)

運(yùn)行結(jié)果


常用2:獲取一行中有多少列數(shù)據(jù)

# 返回該行的有效單元格長(zhǎng)度
# 需要先指定sheet工作表
table = workbook.sheet_by_name(sheet_name='視頻課列表')
num = table.row_len(0)
print(num)

打印結(jié)果:


常用3:獲取指定行或者列中所有的數(shù)據(jù)

# rowx表示是獲取第幾行的數(shù)據(jù)
# start_col表示從索引為多少開(kāi)始,end_colx表示從索引為多少結(jié)束,
# end_colx為None表示結(jié)束沒(méi)有限制
# 獲取指定行中的數(shù)據(jù)并以列表的形式返回

# 需要先指定sheet工作表
table = workbook.sheet_by_name(sheet_name='視頻課列表')
table_list = table.row_values(rowx=0, start_colx=0, end_colx=None)
print(table_list)

運(yùn)行結(jié)果為:


# colx表示是獲取第幾列的數(shù)據(jù)
# start_rowx表示從索引為多少開(kāi)始,end_rowx表示從索引為多少結(jié)束,
# end_rowx為None表示結(jié)束沒(méi)有限制
# 獲取指定列中的數(shù)據(jù)并以列表的形式返回

# 需要先指定sheet工作表
table = workbook.sheet_by_name(sheet_name='視頻課列表')
table_list = table.col_values(colx=0, start_rowx=0, end_rowx=None)
print(table_list)

運(yùn)行結(jié)果為:


補(bǔ)充:了解即可

# 需要先指定sheet工作表
table = workbook.sheet_by_name(sheet_name='視頻課列表')
#返回由該列中所有的單元格對(duì)象組成的列表
print(table.row(0))
#返回由該行中所有的單元格對(duì)象組成的列表
print(table.row_slice(0))
#返回由該行中所有單元格的數(shù)據(jù)類型組成的列表
print(table.row_types(0, start_colx=0, end_colx=None))

運(yùn)行結(jié)果為:

# 需要先指定sheet工作表
table = workbook.sheet_by_name(sheet_name='視頻課列表')
#返回由該列中所有的單元格對(duì)象組成的列表
print(table.col(0, start_rowx=0, end_rowx=None))
#返回由該列中所有的單元格對(duì)象組成的列表
print(table.col_slice(0, start_rowx=0, end_rowx=None))
#返回由該列中所有單元格的數(shù)據(jù)類型組成的列表
print(table.col_types(0, start_rowx=0, end_rowx=None))

運(yùn)行結(jié)果為:

四、單元格的操作

1、獲取單元中的值

# 獲取指定單元格內(nèi)的值(第二行第一列,在python中從零開(kāi)始計(jì)算序號(hào))
# 需要先指定sheet工作表
table = workbook.sheet_by_name(sheet_name='視頻課列表')
value = table.cell_value(rowx=1, colx=0)
print(value)

運(yùn)行結(jié)果為:


2、獲取單元格內(nèi)的組成對(duì)象和數(shù)據(jù)

# 需要先指定sheet工作表
table = workbook.sheet_by_name(sheet_name='視頻課列表')
value = table.cell(rowx=1, colx=0)
print(value)

運(yùn)行結(jié)果


3、獲取單元格的數(shù)據(jù)類型

python讀取excel中單元格的內(nèi)容返回的有5種類型。分別為:

  • 0 empty
  • 1 string
  • 2 number
  • 3 date
  • 4 boolean
  • 5 error

即date的ctype=3,這時(shí)需要使用xlrd的?xldate_as_tuple來(lái)處理為date格式,先判斷表格的ctype=3時(shí)xldate才能開(kāi)始操作。

# 需要先指定sheet工作表
table = workbook.sheet_by_name(sheet_name='視頻課列表')
value = table.cell_type(rowx=0, colx=1)
print(value)

運(yùn)行結(jié)果為:

五、案例

需求:獲取上面表格中的數(shù)據(jù)并依次打印出來(lái)

import xlrd

workbook = xlrd.open_workbook(filename=r'C:\Users\EeeDong-10\Desktop\W3Cschool課程內(nèi)容.xlsx')
# 需要先指定sheet工作表
table = workbook.sheet_by_name(sheet_name='視頻課列表')
# 獲取行數(shù)
rows = table.nrows
# 獲取列數(shù)
cols = table.ncols
# 循環(huán)獲取每行的數(shù)據(jù)
for row in range(rows):
    for col in range(cols):
        value = table.cell_value(row, col)
        print('第{}行{}列的數(shù)據(jù)為:{}'.format(row, col, value))

運(yùn)行結(jié)果為:



以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)