python 读excel xlrd_python使用xlrd读取excel数据

一、安装xlrd

库的安装我这里就不说了..

二、读取 excel

前提条件:excel文件名称为 excel_data.xlsx

1317730-20191115012635369-1897820031.png

1317730-20191115012706215-1682645128.png

1、打开excelw 文件

workbook = xlrd.open_workbook(filename) # filename 为excel文件路径 + 文件名称

2、获取 excel 的sheet工作表的内容

(1)比如:获取第一个sheet工作表的名称,如图

1317730-20191115010836946-470314523.png

贴上代码:

get_sheet_name = workbook.sheet_names()[0] # [0]表示索引,获取第一个sheet工作表名称

(2)比如:获取 excel 所有的sheet工作表的名称

sheetname = workbook.sheet_names()

(3)根据工作表的名称获取sheet工作表页的对象

workbook = xlrd.open_workbook(FileName)

get_sheet_name =workbook.sheet_names()[0]

sheet2=workbook.sheet_by_name(get_sheet_name)print(sheet2)

输出:

(4)根据工作表的索引获取sheet工作表页的对象

workbook =xlrd.open_workbook(FileName)

sheet1=workbook.sheet_by_index(0)print(sheet1)

输出:

(5)获取sheet工作表的行数和列数

workbook =xlrd.open_workbook(FileName)  # 打开文件

sheet1=workbook.sheet_by_index(1)    # 根据索引获取第一个工作表的内容(通过更改索引数字1,可以获取第几个工作表的内容)

nrows=sheet1.nrows              # 获取sheet工作表的行数

ncols=sheet1.ncols              # 获取sheet工作表的列数print(nrows)print(ncols)

输出:

11和7;说明有11行和7列

(6)获取第1行(索引为0)的内容(是一个列表)

workbook =xlrd.open_workbook(FileName)

sheet1= workbook.sheet_by_index(1)

row_data=sheet1.row_values(0)print(row_data)

(7)获取第1列(索引为0)的值(是一个列表)

workbook =xlrd.open_workbook(FileName)

sheet1= workbook.sheet_by_index(1)

col_data=sheet1.col_values(0)print(col_data)

(8)使用行列索引(从0开始)获取单元格的数据

workbook = xlrd.open_workbook(FileName)

sheet1 = workbook.sheet_by_index(1)

cell_A1 = sheet1.cell(0, 0)

print(cell_A1)

(9)将Excel文件中的数据转换成json数组

importxlrdimportjsondefreadexcel(FileName):

workbook=xlrd.open_workbook(FileName)

sheet1= workbook.sheet_by_index(1)

nrows=sheet1.nrows

idx=sheet1.row_values(0)#最终的数据列表

data =[]#从第1行开始遍历循环所有行,获取每行的数据

for i in range(1,nrows):

row_data=sheet1.row_values(i)#组建每一行数据的字典

row_data_dict ={}#遍历行数据的每一项,赋值进行数据字典

for j inrange(len(row_data)):

item=row_data[j]

row_data_dict[idx[j]]=item#将年份字段转成整形

#row_data_dict['year'] = int(row_data_dict['year'])

#将行数据字典加入到data列表中

data.append(row_data_dict)

result= json.dumps(data,indent = 4,ensure_ascii=False)print(result)if __name__ == '__main__':

readexcel(r'D:/CodeBase/ReadData/ReadExcel/excel_data.xlsx')

输出:

[

{"车牌号": "粤A123456","设备号": 13645454412.0,"sim卡号": 13645454412.0,"设备类型": "A5C-8W","所属车组": "测试","车架号": 123.0,"服务密码": 123.0}

]

注意:

json.dumps 进行序列化时,默认使用ascii编码, print json.dumps(data,indent = 4)输出unicode编码的结果,比如: {"\u8f66\u724c\u53f7": "\u7ca4A123456"}

json.dumps(data,indent = 4,ensure_ascii=False),不使用ascii编码,输出结果为:{"车牌号": "粤A123456"}

但是有时也碰到 json.dumps(data,indent = 4,ensure_ascii=False)之后依旧是乱码的格式,可采取下面方式处理:

importjson

dic= {"车牌号": "粤A123456"}print json.dumps(dic,ensure_ascii=False).decode("utf-8").encode("gb2312") #{"车牌号": "粤A123456"}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值