使用流程
Excel数据读取操作是基于工作表对象进行的,所以需要首先获取工作表对象,而工作表对象要通过工作簿对象获取的。
工作簿对象操作
以下操作以以下表为例子:
# 打开文件并返回一个工作簿对象 workbook_obj = xlrd.open_workbook('c:\player.xlsx') # 获取工作表名称列表 print(workbook_obj.sheet_names()) # 获取工作表对象的三个函数,sheet_by_index的参数是索引值,sheet_by_name的参数是工作表名,sheet_loaded两者皆可 print(workbook_obj.sheet_by_index(0)) print(workbook_obj.sheet_by_name('Sheet2')) workbook_obj.sheet_loaded(0) workbook_obj.sheet_loaded('Sheet2') # 返回工作簿的所有工作表对象,是一个列表 workbook_obj.sheets()
行操作
# 获取行数 print(sheet1_obj.nrows) # 获取第二行的数据,原型:SheetObject.row_values(rowx[,start_colx=0,end_colx=None]) print(sheet1_obj.row_values(1)) # ['Beckham', 7.0, '曼联', '中场'] # 获取第二行单元,返回值为[text:'Beckham', number:7.0, text:'曼联', text:'中场'] print(sheet1_obj.row(1)) # 返回值的类型,empty为0,string为1,number为2,data为3,boolean为4,error为5 print(sheet1_obj.row_types(1)) # array('B', [1, 2, 1, 1]) # 获取长度 print(sheet1_obj.row_len(1)) # 4 # sheet1_obj.get_rows()产生一个生成器 for v in sheet1_obj.get_rows(): print(v) # 对行进行切片 print(sheet1_obj.row_slice(1, 0, 1))
列的操作和行的操作差不多,把row改为col即可
单元格操作
print(sheet1_obj.cell(2, 1)) # number:11.0 # 获取值 print(sheet1_obj.cell_value(1, 1)) # 获取类型 print(sheet1_obj.cell_type(2, 1))