Python读取excel并转换为字典⽅法⼀:利⽤利⽤xlrd读取excel⽂件
其实整个过程⽐较简单,利⽤xlrd读取excel⽂件,再把读取到的数据转换为dict即可。
1.安装 xlrd
pip install xlrd
2.读取⽂件,并进⾏格式转换
导⼊的excel表格的格式是这样的:
解析后的格式为:
[{'编号': 1, '时间': '1988-07-21 00:00:00', '年龄': 1, '分数': 63.2, '总分': 1},
{'编号': 2, '时间': '1988-07-21 00:00:00', '年龄': 1, '分数': 63.2, '总分': 1},
python怎么读取excel文件数据{'编号': 3, '时间': '1988-07-21 00:00:00', '年龄': 1, '分数': 63.2, '总分': 1},
{'编号': 4, '时间': '1988-07-21 00:00:00', '年龄': 1, '分数': 63.2, '总分': 1},
{'编号': 5, '时间': '1988-07-21 00:00:00', '年龄': 1, '分数': 63.2, '总分': 1},
{'编号': 6, '时间': '1988-07-21 00:00:00', '年龄': 1, '分数': 63.2, '总分': 1} ]
这⾥只写出主要的代码段:
# excel转dict
def excel_to_dict(self, *args, **kwargs):
""" excel转dict
1.传来的⽂件可以是⽂件路径,也可以是⼆进制⽂件
2.传来的可以是⼆进制⽂件,这⾥以django接收前端传来⽂件为例:
接收⽤ ("fileName", None) 传⼊ my_file 即可
kwargs接收的参数有:
_sheet索引,0代表第⼀个表,1代表第⼆个表,默认0
_max表格最⼤的⾏数,默认2000⾏
_min表格最⼩的⾏数,默认1⾏ """
# excel ⽂件
excel_file = self.__mark
# sheet 索引
_sheet = ("sheet", 0)
# max 最⼤条数
_max = ("max", 2000)
# min 最⼩条数
_min = ("min", 0)
# 判断是否为⽂件路径
if ists(excel_file):
workbook = xlrd.open_workbook(excel_file)
# 上传的⽂件不保存,直接在内存中读取⽂件
workbook = xlrd.open_workbook(filename=excel_file.name, file_contents=ad())
# 根据sheet索引或者名称获取sheet内容
data_sheet = workbook.sheets()[_sheet]
# 获取sheet名称,⾏数,列数据
sheet_name = data_sheet.name
sheet_nrows = ws
sheet_ncols = ls
# ⽂件记录不得⼤于2000条
if sheet_nrows > _max:
return {"code": "0001", "msg": "⽂件记录⼤于{}条,请联系管理员上传".format(_max), "data": None} # 判断是否为空数据
if sheet_nrows <= _min:
return {"code": "0001", "msg": "空数据表格,停⽌导⼊", "data": None}
# excel转dict
get_data = []
for i in range(1, sheet_nrows):
# 定义⼀个空字典
sheet_data = {}
for j in range(sheet_ncols):
# 获取单元格数据类型
c_type = ll(i, j).ctype
# 获取单元格数据
c_cell = ll_value(i, j)
if c_type == 2 and c_cell % 1 == 0: # 如果是整形
c_cell = int(c_cell)
elif c_type == 3:
# 转成datetime对象
c_cell = datetime(*xlrd.xldate_as_tuple(c_cell, 0)).strftime('%Y-%m-%d %H:%M:%S') elif c_type == 4:
c_cell = True if c_cell == 1 else False
sheet_data[w_values(0)[j]] = c_cell
# 循环每⼀个有效的单元格,将字段与值对应存储到字典中
# 字典的key就是excel表中每列第⼀⾏的字段
# sheet_data[self.keys[j]] = w_values(i)[j]
# 再将字典追加到列表中
get_data.append(sheet_data)
# 返回从excel中获取到的数据:以列表存字典的形式返回
⽅法⼆:利⽤xToolkit库
1.安装⽅法:
2.使⽤⽅法⽐较简单,⼀⾏代码即可搞定
导⼊的excel表格的格式是这样的:
# excel转dict
# 1.传来的⽂件可以是⽂件路径,也可以是⼆进制⽂件
# 2.传来的可以是⼆进制⽂件,这⾥以django接收前端传来⽂件为例:
# 接收⽤ ("fileName", None) 传⼊ my_file 即可
# kwargs接收的参数有:
# _sheet索引,0代表第⼀个表,1代表第⼆个表,默认0
# _max表格最⼤的⾏数,默认2000⾏
# _min表格最⼩的⾏数,默认1⾏
>> [{'编号': 1, '时间': '1988-07-21 00:00:00', '年龄': 1, '分数': 63.2, '总分': 1}, {'编号': 2, '时间': '1988-07-21 00:00:00', '年龄': 1, '分数': 63.2, '总分': 1}, {'编号': 3, '时间': '1988-07-21 00:00:00', '年龄': 1, '分数': 63.2, '总分': 1}, {'编号': 4, '时间': '1988-07-21 00:00:00', '年龄': 1, '分数': 63.2, '总分': 1}, {'编号': 5, '时间': '1988-07-21 00:00:00', '年龄': 1, '分数': 63.2, '总分': 1}, {'编号': 6, '时间': '1988-07-21 00:00:00', '年龄': 1, '分数': 63.2, '总分': 1} ]
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论