一、xlrd模块介绍
1.xlrd是读取excel表格数据;
2.支持xlsx和xls格式的excel表格
3.安装方式:pip install xlrd
4.模块导入方式:import xlrd
二、环境准备
1.先安装xlrd模块,打开cmd,输入pip install xlrd在线安装
三、基本操作
1.excle基本操作方法如下
import xlrd
#打开excle表格,参数是文件路径
a=xlrd.open_workbook("E:\\sys_user.xls")
#table=a.sheets()[0] #通过索引顺序获取
# table=a.sheet_by_index(0) #通过索引顺序获取
table=a.sheet_by_name("user") #通过名称获取
nrows=table.nrows #获取总行数
ncols=table.ncols #获取总列数
print(nrows,ncols)
#获取一行或一列的值,参数是第几行
print(table.row_values(0)) #获取第一行值
print(table.col_values(0)) #获取第一列值
运行结果:
20 2
['test1', 1.0]
['test1', 'test2', 'test3', 'test4', 'test5', 'test6', 'test7', 'test8', 'test9', 'test10', 'test11', 'test12', 'test13', 'test14', 'test15', 'test16', 'test17', 'test18', 'test19', 'test20']
三、excel存放数据
1.在excel中存放数据,第一行为标题,也就是对应字典里面的key值,如:username,passwd
2.如果excel数据中有纯数字的一定要右键》设置单元格格式》文本格式,要不然读取的数据是浮点数(先设置单元格格式后编辑,编辑成功左上角有小三角图标)
注意,我尝试先填写数字,再设置文本,未显示小三角图标;将数字内容删除,重写填写数字,显示小三角图标。
四、封装读取方法
1.最终读取的数据是多个字典的list类型数据,第一行数据是字典里的key值,从第二行开始一一对应value值
2.封装好后代码如下:
import xlrd
a=xlrd.open_workbook("D:\\user.xlsx")
table=a.sheet_by_name("user")
nrows=table.nrows
ncols=table.ncols
print(nrows,ncols)#6,2
key=table.row_values(0)
result=[]
n=1
while n!=nrows:
d={}
v=table.row_values(n)
# print(v)
for i in range(ncols):#0,1
d[key[i]]=v[i]
result.append(d)
n+=1
# print(d)
print(result)
运行结果:
6 2
[{'username': 'test1', 'passwd': '3'}, {'username': 'test2', 'passwd': '4'}, {'username': 'test3', 'passwd': '5'}, {'username': 'test4', 'passwd': '6'}, {'username': 'test5', 'passwd': '7'}]
整理成方法,代码如下:
import xlrd
def read_excel(filepath,sheetname):
a=xlrd.open_workbook(filepath)
table=a.sheet_by_name(sheetname)
result=[]
n=1
nrow=table.nrows
ncol=table.ncols
key=table.row_values(0)
while n!=nrow:
d={}
v=table.row_values(n)
for i in range(ncol):
d[key[i]]=v[i]
result.append(d)
n += 1
return result
print(read_excel("D:/user.xlsx","user"))
运行结果:
[{'username': 'test1', 'passwd': '3'}, {'username': 'test2', 'passwd': '4'}, {'username': 'test3', 'passwd': '5'}, {'username': 'test4', 'passwd': '6'}, {'username': 'test5', 'passwd': '7'}]