python中xlrd模塊的使用詳解
一、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)
五、案例
需求:獲取上面表格中的數據並依次打印出來
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
到此這篇關於python中xlrd模塊的使用詳解的文章就介紹到這瞭,更多相關python xlrd模塊內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- Python中的xlrd模塊使用整理
- Python對Excel進行處理的實操指南
- Python使用xlrd和xlwt實現自動化操作Excel
- 深入瞭解Python中的時間處理函數
- 使用Python讀取和修改Excel文件(基於xlrd、xlwt和openpyxl模塊)