python中xlrd模塊的使用詳解
一、xlrd的安裝
打開cmd輸入pip install xlrd安裝完成即可

二、xlrd模塊的使用
下面以這個(gè)工作簿為例

1、導(dǎo)入模塊
import xlrd
2、打開工作薄
# filename是文件的路徑名稱 workbook = xlrd.open_workbook(filename=r'C:\Users\Windows10\Desktop\xlsx文件.xlsx')
3、獲取需要操作的sheet表格(有三種方法)
①通過索引獲取
# 獲取第一個(gè)sheet表格 table = workbook.sheets()[0]
②通過索引順序獲取
# 通過索引順序獲取 table = workbook.sheet_by_index(0)
③通過sheet名稱獲取
# 通過sheet名稱獲取 table = workbook.sheet_by_name(sheet_name='Sheet1')
補(bǔ)充:獲取工作薄中所有sheet名稱
# 獲取工作薄中所有的sheet名稱 names = workbook.sheet_names() 打印結(jié)果 ['Sheet1', 'Sheet2', 'Sheet3']
三、行和列的操作
常用1:獲取sheet中有多少行和多少列
# 獲取sheet中有效行數(shù) row = table.nrows print(row) 打印結(jié)果6
# 獲取sheet中有效列數(shù) col = table.ncols print(col) 打印結(jié)果 4
常用2:獲取一行中有多少列數(shù)據(jù)
# 返回該行的有效單元格長度 num = table.row_len(0) print(num) 打印結(jié)果 4
常用3:獲取指定行或者列中所有的數(shù)據(jù)
# rowx表示是獲取第幾行的數(shù)據(jù) # start_col表示從索引為多少開始,end_colx表示從索引為多少結(jié)束, # end_colx為None表示結(jié)束沒有限制 # 獲取指定行中的數(shù)據(jù)并以列表的形式返回 table_list = table.row_values(rowx=0, start_colx=0, end_colx=None) print(table_list) 打印結(jié)果 ['渡劫(送千萬元寶)', '新手禮包', '主角技能書*20,三級攻擊石*2,萌新相框*1', 'nesHtg6Y']
# colx表示是獲取第幾列的數(shù)據(jù) # start_rowx表示從索引為多少開始,end_rowx表示從索引為多少結(jié)束, # end_rowx為None表示結(jié)束沒有限制 # 獲取指定列中的數(shù)據(jù)并以列表的形式返回 table_list = table.col_values(colx=0, start_rowx=0, end_rowx=None) print(table_list) 打印結(jié)果 ['渡劫(送千萬元寶)', '渡劫(送千萬元寶)', '渡劫(送千萬元寶)', '渡劫(送千萬元寶)', '名揚(yáng)沙城-殺豬爆充值', '名揚(yáng)沙城-殺豬爆充值']
補(bǔ)充:了解即可
#返回由該列中所有的單元格對象組成的列表
print(table.row(0))
#返回由該行中所有的單元格對象組成的列表
print(table.row_slice(0))
#返回由該行中所有單元格的數(shù)據(jù)類型組成的列表
print(table.row_types(0, start_colx=0, end_colx=None))
打印結(jié)果
[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)) #返回由該列中所有單元格的數(shù)據(jù)類型組成的列表 print(table.col_types(0, start_rowx=0, end_rowx=None)) 打印結(jié)果 [text:'渡劫(送千萬元寶)', text:'渡劫(送千萬元寶)', text:'渡劫(送千萬元寶)', text:'渡劫(送千萬元寶)', text:'名揚(yáng)沙城-殺豬爆充值', text:'名揚(yáng)沙城-殺豬爆充值'] [text:'渡劫(送千萬元寶)', text:'渡劫(送千萬元寶)', text:'渡劫(送千萬元寶)', text:'渡劫(送千萬元寶)', text:'名揚(yáng)沙城-殺豬爆充值', text:'名揚(yáng)沙城-殺豬爆充值'] [1, 1, 1, 1, 1, 1]
四、單元格的操作
1、獲取單元中的值
# 獲取指定單元格內(nèi)的值 value = table.cell_value(rowx=0, colx=1) print(value) 打印結(jié)果 新手禮包
2、獲取單元格內(nèi)的組成對象和數(shù)據(jù)
value = table.cell(rowx=0, colx=1) print(value) 打印結(jié)果 text:'新手禮包'
3、獲取單元格的數(shù)據(jù)類型
python讀取excel中單元格的內(nèi)容返回的有5種類型。ctype : 0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error。即date的ctype=3,這時(shí)需要使用xlrd的xldate_as_tuple來處理為date格式,先判斷表格的ctype=3時(shí)xldate才能開始操作。
value = table.cell_type(rowx=0, colx=1) print(value)
五、案例
需求:獲取上面表格中的數(shù)據(jù)并依次打印出來
import xlrd
# 打開工作薄
workbook = xlrd.open_workbook(r'C:\Users\Windows10\Desktop\xlsx文件.xlsx')
# 獲取第一個(gè)sheet表格
table = workbook.sheets()[0]
# 獲取行數(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))
打印結(jié)果
第0行0列的數(shù)據(jù)為:渡劫(送千萬元寶)
第0行1列的數(shù)據(jù)為:新手禮包
第0行2列的數(shù)據(jù)為:主角技能書*20,三級攻擊石*2,萌新相框*1
第0行3列的數(shù)據(jù)為:nesHtg6Y
第1行0列的數(shù)據(jù)為:渡劫(送千萬元寶)
第1行1列的數(shù)據(jù)為:特權(quán)禮包
第1行2列的數(shù)據(jù)為:翅膀進(jìn)階丹*20,翅膀技能書*10,萌新氣泡*1
第1行3列的數(shù)據(jù)為:QqBSc7VJ
第2行0列的數(shù)據(jù)為:渡劫(送千萬元寶)
第2行1列的數(shù)據(jù)為:獨(dú)家禮包
第2行2列的數(shù)據(jù)為:高級生命精華*10,升星石*20,法寶靈紋石*10
第2行3列的數(shù)據(jù)為:NqsEdtBt
第3行0列的數(shù)據(jù)為:渡劫(送千萬元寶)
第3行1列的數(shù)據(jù)為:預(yù)約禮包
第3行2列的數(shù)據(jù)為:高級攻擊精華*10,生命神兵印記包*5,老司機(jī)氣泡*1
第3行3列的數(shù)據(jù)為:P22vY6wa
第4行0列的數(shù)據(jù)為:名揚(yáng)沙城-殺豬爆充值
第4行1列的數(shù)據(jù)為:萬元青龍
第4行2列的數(shù)據(jù)為:凌霄青龍*1
第4行3列的數(shù)據(jù)為:NB999
第5行0列的數(shù)據(jù)為:名揚(yáng)沙城-殺豬爆充值
第5行1列的數(shù)據(jù)為:尊貴VIP11
第5行2列的數(shù)據(jù)為:5元*2、神羽*20、斗笠石(中)*20
第5行3列的數(shù)據(jù)為:VIP999
到此這篇關(guān)于python中xlrd模塊的使用詳解的文章就介紹到這了,更多相關(guān)python xlrd模塊內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python線程池ThreadPoolExecutor,傳單個(gè)參數(shù)和多個(gè)參數(shù)方式
這篇文章主要介紹了python線程池ThreadPoolExecutor,傳單個(gè)參數(shù)和多個(gè)參數(shù)方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03
pandas DataFrame.shift()函數(shù)的具體使用
本文主要介紹了pandas DataFrame.shift()函數(shù)的使用,pandas DataFrame.shift()函數(shù)可以把數(shù)據(jù)移動指定的位數(shù),有需要了解pandas DataFrame.shift()用法的朋友可以參考一下2021-05-05
python3環(huán)境搭建過程(利用Anaconda+pycharm)完整版
這篇文章主要介紹了python3環(huán)境搭建過程(利用Anaconda+pycharm)完整版,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-08-08
Python2和Python3中@abstractmethod使用方法
這篇文章主要介紹了Python2和Python3中@abstractmethod使用方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-02-02
Python深度學(xué)習(xí)pytorch神經(jīng)網(wǎng)絡(luò)Dropout應(yīng)用詳解解
這篇文章主要為大家介紹了Python深度學(xué)習(xí)中關(guān)于pytorch神經(jīng)網(wǎng)絡(luò)Dropout的應(yīng)用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2021-10-10
Python基于pycrypto實(shí)現(xiàn)的AES加密和解密算法示例
這篇文章主要介紹了Python基于pycrypto實(shí)現(xiàn)的AES加密和解密算法,結(jié)合實(shí)例形式分析了Python使用pycrypto模塊進(jìn)行AES加密與解密操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2018-04-04
詳解使用python的logging模塊在stdout輸出的兩種方法
這篇文章主要介紹了詳解使用python的logging模塊在stdout輸出的相關(guān)資料,需要的朋友可以參考下2017-05-05
如何計(jì)算 tensorflow 和 pytorch 模型的浮點(diǎn)運(yùn)算數(shù)
FLOPs 是 floating point operations 的縮寫,指浮點(diǎn)運(yùn)算數(shù),可以用來衡量模型/算法的計(jì)算復(fù)雜度。本文主要討論如何在 tensorflow 1.x, tensorflow 2.x 以及 pytorch 中利用相關(guān)工具計(jì)算對應(yīng)模型的 FLOPs,需要的朋友可以參考下2022-11-11

