xlrd模塊的使用
- 一、xlrd的安裝
- 二、xlrd模塊的使用
- 1、匯入模塊
- 2、打開作業薄
- 3、獲取需要操作的sheet表格(有三種方法)
- ①通過索引獲取
- ②通過索引順序獲取
- ③通過sheet名稱獲取
- 補充:獲取作業薄中所有sheet名稱
- 三、行和列的操作
- 常用1:獲取sheet中有多少行和多少列
- 常用2:獲取一行中有多少列資料
- 常用3:獲取指定行或者列中所有的資料
- 補充:了解即可
- 四、單元格的操作
- 1、獲取單元中的值
- 2、獲取單元格內的組成物件和資料
- 3、獲取單元格的資料型別
- 五、案例
一、xlrd的安裝
打開cmd輸入pip install xlrd安裝完成即可
二、xlrd模塊的使用
下面以這個作業簿為例

1、匯入模塊
import xlrd
2、打開作業薄
# filename是檔案的路徑名稱
workbook = xlrd.open_workbook(filename=r'C:\Users\Windows10\Desktop\xlsx檔案.xlsx')
3、獲取需要操作的sheet表格(有三種方法)
①通過索引獲取
# 獲取第一個sheet表格
table = workbook.sheets()[0]
②通過索引順序獲取
# 通過索引順序獲取
table = workbook.sheet_by_index(0)
③通過sheet名稱獲取
# 通過sheet名稱獲取
table = workbook.sheet_by_name(sheet_name='Sheet1')
補充:獲取作業薄中所有sheet名稱
# 獲取作業薄中所有的sheet名稱
names = workbook.sheet_names()
列印結果
['Sheet1', 'Sheet2', 'Sheet3']
三、行和列的操作
常用1:獲取sheet中有多少行和多少列
# 獲取sheet中有效行數
row = table.nrows
print(row)
列印結果6
# 獲取sheet中有效列數
col = table.ncols
print(col)
列印結果
4
常用2:獲取一行中有多少列資料
# 回傳該行的有效單元格長度
num = table.row_len(0)
print(num)
列印結果
4
常用3:獲取指定行或者列中所有的資料
# rowx表示是獲取第幾行的資料
# start_col表示從索引為多少開始,end_colx表示從索引為多少結束,
# end_colx為None表示結束沒有限制
# 獲取指定行中的資料并以串列的形式回傳
table_list = table.row_values(rowx=0, start_colx=0, end_colx=None)
print(table_list)
列印結果
['渡劫(送千萬元寶)', '新手禮包', '主角技能書*20,三級攻擊石*2,萌新相框*1', 'nesHtg6Y']
# colx表示是獲取第幾列的資料
# start_rowx表示從索引為多少開始,end_rowx表示從索引為多少結束,
# end_rowx為None表示結束沒有限制
# 獲取指定列中的資料并以串列的形式回傳
table_list = table.col_values(colx=0, start_rowx=0, end_rowx=None)
print(table_list)
列印結果
['渡劫(送千萬元寶)', '渡劫(送千萬元寶)', '渡劫(送千萬元寶)', '渡劫(送千萬元寶)', '名揚沙城-殺豬爆充值', '名揚沙城-殺豬爆充值']
補充:了解即可
#回傳由該列中所有的單元格物件組成的串列
print(table.row(0))
#回傳由該行中所有的單元格物件組成的串列
print(table.row_slice(0))
#回傳由該行中所有單元格的資料型別組成的串列
print(table.row_types(0, start_colx=0, end_colx=None))
列印結果
[text:'渡劫(送千萬元寶)', text:'新手禮包', text:'主角技能書*20,三級攻擊石*2,萌新相框*1', text:'nesHtg6Y']
[text:'渡劫(送千萬元寶)', text:'新手禮包', text:'主角技能書*20,三級攻擊石*2,萌新相框*1', text:'nesHtg6Y']
array('B', [1, 1, 1, 1])
#回傳由該列中所有的單元格物件組成的串列
print(table.col(0, start_rowx=0, end_rowx=None))
#回傳由該列中所有的單元格物件組成的串列
print(table.col_slice(0, start_rowx=0, end_rowx=None))
#回傳由該列中所有單元格的資料型別組成的串列
print(table.col_types(0, start_rowx=0, end_rowx=None))
列印結果
[text:'渡劫(送千萬元寶)', text:'渡劫(送千萬元寶)', text:'渡劫(送千萬元寶)', text:'渡劫(送千萬元寶)', text:'名揚沙城-殺豬爆充值', text:'名揚沙城-殺豬爆充值']
[text:'渡劫(送千萬元寶)', text:'渡劫(送千萬元寶)', text:'渡劫(送千萬元寶)', text:'渡劫(送千萬元寶)', text:'名揚沙城-殺豬爆充值', text:'名揚沙城-殺豬爆充值']
[1, 1, 1, 1, 1, 1]
四、單元格的操作
1、獲取單元中的值
# 獲取指定單元格內的值
value = table.cell_value(rowx=0, colx=1)
print(value)
列印結果
新手禮包
2、獲取單元格內的組成物件和資料
value = table.cell(rowx=0, colx=1)
print(value)
列印結果
text:'新手禮包'
3、獲取單元格的資料型別
python讀取excel中單元格的內容回傳的有5種型別,ctype : 0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error,即date的ctype=3,這時需要使用xlrd的xldate_as_tuple來處理為date格式,先判斷表格的ctype=3時xldate才能開始操作,
value = table.cell_type(rowx=0, colx=1)
print(value)
1
列印結果
五、案例
需求:獲取上面表格中的資料并依次列印出來
import xlrd
# 打開作業薄
workbook = xlrd.open_workbook(r'C:\Users\Windows10\Desktop\xlsx檔案.xlsx')
# 獲取第一個sheet表格
table = workbook.sheets()[0]
# 獲取行數
rows = table.nrows
# 獲取列數
cols = table.ncols
# 回圈獲取每行的資料
for row in range(rows):
for col in range(cols):
value = table.cell_value(row, col)
print('第{}行{}列的資料為:{}'.format(row, col, value))
列印結果
第0行0列的資料為:渡劫(送千萬元寶)
第0行1列的資料為:新手禮包
第0行2列的資料為:主角技能書*20,三級攻擊石*2,萌新相框*1
第0行3列的資料為:nesHtg6Y
第1行0列的資料為:渡劫(送千萬元寶)
第1行1列的資料為:特權禮包
第1行2列的資料為:翅膀進階丹*20,翅膀技能書*10,萌新氣泡*1
第1行3列的資料為:QqBSc7VJ
第2行0列的資料為:渡劫(送千萬元寶)
第2行1列的資料為:獨家禮包
第2行2列的資料為:高級生命精華*10,升星石*20,法寶靈紋石*10
第2行3列的資料為:NqsEdtBt
第3行0列的資料為:渡劫(送千萬元寶)
第3行1列的資料為:預約禮包
第3行2列的資料為:高級攻擊精華*10,生命神兵印記包*5,老司機氣泡*1
第3行3列的資料為:P22vY6wa
第4行0列的資料為:名揚沙城-殺豬爆充值
第4行1列的資料為:萬元青龍
第4行2列的資料為:凌霄青龍*1
第4行3列的資料為:NB999
第5行0列的資料為:名揚沙城-殺豬爆充值
第5行1列的資料為:尊貴VIP11
第5行2列的資料為:5元*2、神羽*20、斗笠石(中)*20
第5行3列的資料為:VIP999
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/255215.html
標籤:python
