方法一:利用利用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},{'编号': 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转dict1.传来的文件可以是文件路径,也可以是二进制文件2.传来的可以是二进制文件,这里以django接收前端传来文件为例:接收用 request.FILES.get("fileName", None) 传入 my_file 即可kwargs接收的参数有:_sheet索引,0代表第一个表,1代表第二个表,默认0_max表格最大的行数,默认2000行_min表格最小的行数,默认1行"""# excel 文件excel_file = self.__mark# sheet 索引_sheet = kwargs.get("sheet", 0)# max 最大条数_max = kwargs.get("max", 2000)# min 最小条数_min = kwargs.get("min", 0)# 判断是否为文件路径if os.path.exists(excel_file):workbook = xlrd.open_workbook(excel_file)else:# 上传的文件不保存,直接在内存中读取文件workbook = xlrd.open_workbook(filename=excel_file.name, file_contents=excel_file.read())# 根据sheet索引或者名称获取sheet内容data_sheet = workbook.sheets()[_sheet]# 获取sheet名称,行数,列数据sheet_name = data_sheet.namesheet_nrows = data_sheet.nrowssheet_ncols = data_sheet.ncols# 文件记录不得大于2000条if sheet_nrows > _max:return {"code": "0001", "msg": "文件记录大于{}条,请联系管理员上传".format(_max), "data": None}# 判断是否为空数据if sheet_nrows <= _min:return {"code": "0001", "msg": "空数据表格,停止导入", "data": None}# excel转dictget_data = []for i in range(1, sheet_nrows):# 定义一个空字典sheet_data = {}for j in range(sheet_ncols):# 获取单元格数据类型c_type = data_sheet.cell(i, j).ctype# 获取单元格数据c_cell = data_sheet.cell_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 Falsesheet_data[data_sheet.row_values(0)[j]] = c_cell# 循环每一个有效的单元格,将字段与值对应存储到字典中# 字典的key就是excel表中每列第一行的字段# sheet_data[self.keys[j]] = self.table.row_values(i)[j]# 再将字典追加到列表中get_data.append(sheet_data)# 返回从excel中获取到的数据:以列表存字典的形式返回return get_data
方法二:利用xToolkit库
1.安装方法:
pip install xToolkit  -i  http://pypi.douban.com/simple --trusted-host pypi.douban.com

xToolkit库是我自己封装的python内置库的一个扩展库.把python的datetime,string,list,dist,xthread等数据结构进行了功能的扩展。里面好用的功能比较多,可以前往 https://blog.csdn.net/qq_22409661/article/details/108531485 查看具体用法。

2.使用方法比较简单,一行代码即可搞定
xfile.read("./result/t_excel.xls").excel_to_dict()

导入的excel表格的格式是这样的:

# excel转dict# 1.传来的文件可以是文件路径,也可以是二进制文件
# 2.传来的可以是二进制文件,这里以django接收前端传来文件为例:
#     接收用 request.FILES.get("fileName", None) 传入 my_file 即可# kwargs接收的参数有:
#     _sheet索引,0代表第一个表,1代表第二个表,默认0
#     _max表格最大的行数,默认2000行
#     _min表格最小的行数,默认1行xfile.read("./result/t_excel.xls").excel_to_dict()
>> [{'编号': 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}]

Python 读取excel并转换为字典相关推荐

  1. python读excel两列为字典_用python读取Excel并保存字典?一两行代码完成骚操作

    分享一个前几天晚上粉丝问的问题,觉得很实用的一个问题,用python读取Excel并保存字典,如何做? 下面是该同学问题截图和代码 代码截图是下面这样的 不知道大家第一眼看了这个代码,什么感受?我第一 ...

  2. python 读取excel太慢_Python 读取excel并转换为字典

    方法一:利用利用xlrd读取excel文件 其实整个过程比较简单,利用xlrd读取excel文件,再把读取到的数据转换为dict即可. 1.安装 xlrd pip install xlrd 2.读取文 ...

  3. python 读取文本并转换为字典_遇见的python问题--如何将文件里的内容转换成字典类型...

    文件内容如下: liuyang,123456 liyun,123456 zhangsna,12345lkj #方法一:从文件中读取数据,一行读取一个列表,读取出一个嵌套的列表,再转换成字典 with ...

  4. Python读取Excel中的数据

    1.用xlrd包读取excel数据 import xlrddef read_excel():# 打开文件,xlrd.open_workbook(),函数中参数为文件路径,分为相对路径和绝对路径work ...

  5. python读取excel日期内容读出来是数字-Python读取Excel,日期列读出来是数字的处理...

    Python读取Excel,里面如果是日期,直接读出来是float类型,无法直接使用. 通过判断读取表格的数据类型ctype,进一步处理. 返回的单元格内容的类型有5种: ctype: 0 empty ...

  6. python读取excelsheet-一文看懂用Python读取Excel数据

    原标题:一文看懂用Python读取Excel数据 导读:现有的Excel分为两种格式:xls(Excel 97-2003)和xlsx(Excel 2007及以上). Python处理Excel文件主要 ...

  7. python读取excel表格-python读取excel表格中的数据

    使用python语言实现Excel 表格中的数据读取,需要用到xlrd.py模块,实现程序如下: import xlrd #导入xlrd模块 class ExcelData(): def __init ...

  8. vb.net读取excel并写入dgv_如何用Python读取Excel中的图片?然后写入图片?

    大家好,在使用Python进行办公自动化操作时,一定少不了与Excel表格的交互,我们通常是用pandas处理表格数据,但大多数情况下,都是读取表格中的数值进行分析. 那么你知道如何使用Python读 ...

  9. 如何用Python读取Excel中图片?又如何用Python往Excel中写入图片?

    大家好,在使用Python进行办公自动化操作时,一定少不了与Excel表格的交互,我们通常是用pandas处理表格数据,但大多数情况下,都是读取表格中的数值进行分析. 那么你知道如何使用Python读 ...

最新文章

  1. 人工智能一定要用python吗_学人工智能一定要学Python吗?
  2. 如何隐晦地表达“滚”?
  3. php获取周几,php怎么获得星期几
  4. 嵌入式和fpga哪个好前景_Java 和 go 哪个就业前景好一点?面向金钱编程,这个回答太现实...
  5. 简要分析JM8.6代码中foreman_part_qcif.yuv文件的YUV数据如何悄无声息地进入程序
  6. 谷歌这个大杀器要让英伟达慌了,实战评测:TPU相比GPU简直又快又省
  7. Microsoft Virtual Lab Use Guide
  8. xjad使用中的几个问题
  9. css学习25:设置文本样式
  10. 红旗linux桌面版_瑞星ESM杀毒软件For Linux获红旗兼容性认证
  11. qpython3.7.4版本下载_QPython3app下载
  12. ln命令 Linux软连接(Symbolic Link)和硬链接(Hard Link)
  13. 中兴V889DRoot后可删和不可删
  14. python生成验证码的程序_用python生成验证码图片
  15. 自学Java day8 项目-零钱通 从jvav到架构师
  16. FileNotFoundException报错, src\main\....\....(拒绝访问) , 原因:1. 方法没有判断文件夹和文件, 2.没有指明文件的具体路径和名字...
  17. 物联网技术概论:第1章
  18. Lua 报错 PANIC: unprotected error in call to Lua API (no calling environment) 解决办法
  19. 算法:递归(汉诺塔)
  20. Spark数据挖掘实例1:基于 Audioscrobbler 数据集音乐推荐

热门文章

  1. 如何在QQ群里做广告进行推广【转】
  2. c语言putchar_C语言学习笔记(三)指针
  3. sql -- 查找电话相同的人的姓名
  4. 准备笔试-埃森哲在线笔试
  5. 微信小程序遇到的坑系列---小程序上传图片线上失败
  6. MATLAB【数字图像处理】 实验四:图像分割
  7. 疫情常态化,华为云会议不打烊
  8. 实现androind系统蒙古语输入法
  9. 2003系统主机溢出提权漏洞分析
  10. 并行编程-disruptor与Future(CompletableFuture 和 guava)场景比较