1、xlrd库的安装

直接使用pip工具进行安装(当然也可以使用pycharmIDE进行安装,这里就不详述了)

pip install xlrd

2、xlrd模块的一些常用命令

①打开excel文件并创建对象存储

  1. data = xlrd.open_workbook(文件路径)

②获取文件中所有工作表的名称

  1. data.sheet_names()

③根据工作表的名称获取里面的行列内容

  1. table = data.sheet_by_name('Sheet1')

④获取工作表的名称、行数、列数

  1. name = table.name
  2. rowNum = table.nrows
  3. colNum = table.ncols

⑤获取单元格内容的3种方式

  1. table.cell(i,j).value
  2. table.cell_value(i,j)
  3. table.row(i)[j].value

⑥获取单元格数据类型

  1. table.cell(i,j).ctype
  2. 或者
  3. type(table.cell_value(i, j)

xlrd的数据类型有:



0 empty,

1 string,

2 number,

3 date,

4 boolean,

5 error



默认从excel中取出的数据打印出来会有问题:

数字一律按浮点型输出,日期输出成一串小数,布尔型输出0或1,所以我们必须在程序中做判断处理转换成我们想要的数据类型

⑦获取工作表第一行的所有字段列表

  1. table.row_values(0)

3、写一个自动获取excel表内容的类

本代码已实现自动转换单元格数据类型,不会发生整形数字以浮点数显示,布尔型True或False显示为1,0;日期时间显示为一连串的小数问题

  1. import xlrd
  2. from xlrd import xldate_as_tuple
  3. import datetime
  4. '''
  5. xlrd中单元格的数据类型
  6. 数字一律按浮点型输出,日期输出成一串小数,布尔型输出0或1,所以我们必须在程序中做判断处理转换
  7. 成我们想要的数据类型
  8. 0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error
  9. '''
  10. class ExcelData():
  11. # 初始化方法
  12. def __init__(self, data_path, sheetname):
  13. #定义一个属性接收文件路径
  14. self.data_path = data_path
  15. # 定义一个属性接收工作表名称
  16. self.sheetname = sheetname
  17. # 使用xlrd模块打开excel表读取数据
  18. self.data = xlrd.open_workbook(self.data_path)
  19. # 根据工作表的名称获取工作表中的内容(方式①)
  20. self.table = self.data.sheet_by_name(self.sheetname)
  21. # 根据工作表的索引获取工作表的内容(方式②)
  22. # self.table = self.data.sheet_by_name(0)
  23. # 获取第一行所有内容,如果括号中1就是第二行,这点跟列表索引类似
  24. self.keys = self.table.row_values(0)
  25. # 获取工作表的有效行数
  26. self.rowNum = self.table.nrows
  27. # 获取工作表的有效列数
  28. self.colNum = self.table.ncols
  29. # 定义一个读取excel表的方法
  30. def readExcel(self):
  31. # 定义一个空列表
  32. datas = []
  33. for i in range(1, self.rowNum):
  34. # 定义一个空字典
  35. sheet_data = {}
  36. for j in range(self.colNum):
  37. # 获取单元格数据类型
  38. c_type = self.table.cell(i,j).ctype
  39. # 获取单元格数据
  40. c_cell = self.table.cell_value(i, j)
  41. if c_type == 2 and c_cell % 1 == 0: # 如果是整形
  42. c_cell = int(c_cell)
  43. elif c_type == 3:
  44. # 转成datetime对象
  45. date = datetime.datetime(*xldate_as_tuple(c_cell,0))
  46. c_cell = date.strftime('%Y/%d/%m %H:%M:%S')
  47. elif c_type == 4:
  48. c_cell = True if c_cell == 1 else False
  49. sheet_data[self.keys[j]] = c_cell
  50. # 循环每一个有效的单元格,将字段与值对应存储到字典中
  51. # 字典的key就是excel表中每列第一行的字段
  52. # sheet_data[self.keys[j]] = self.table.row_values(i)[j]
  53. # 再将字典追加到列表中
  54. datas.append(sheet_data)
  55. # 返回从excel中获取到的数据:以列表存字典的形式返回
  56. return datas
  57. if __name__ == "__main__":
  58. data_path = "ttt.xlsx"
  59. sheetname = "Sheet1"
  60. get_data = ExcelData(data_path, sheetname)
  61. datas = get_data.readExcel()
  62. print(datas)

在本地创建了一个excel文件,内容如下:

代码执行后效果展示:

  1. [
  2. {'学号': 1001, '姓名': '张1', '年龄': 18, '专业': '语文', '考试时间': '2019/18/06 09:00:00'},
  3. {'学号': 1002, '姓名': '张2', '年龄': 19, '专业': '数学', '考试时间': '2019/19/06 09:00:00'},
  4. {'学号': 1003, '姓名': '张3', '年龄': 20, '专业': '英语', '考试时间': '2019/20/06 09:00:00'},
  5. {'学号': 1004, '姓名': '张4', '年龄': 21, '专业': '物理', '考试时间': '2019/21/06 09:00:00'},
  6. {'学号': 1005, '姓名': '张5', '年龄': 22, '专业': '化学', '考试时间': '2019/22/06 09:00:00'}
  7. ]

Python xlrd模块读取Excel表中的数据的更多相关文章

  1. 用python的pandas读取excel文件中的数据

    一.读取Excel文件   使用pandas的read_excel()方法,可通过文件路径直接读取.注意到,在一个excel文件中有多个sheet,因此,对excel文件的读取实际上是读取指定文件.并 ...

  2. C#读取Excel表中的数据时,为何有些行的字段内容读取不到

    转载:http://bbs.csdn.net/topics/360220285 1.当某列数据中含有混合类型时,在.NET中使用Microsoft.Jet.OLEDB.4.0来读取Excel文件造成数 ...

  3. C#读取Excel表中的数据时混合字段部分数据没有

    解决同一列中“字符串”和“数字”两种格式同时存在,读取时,不能正确显示“字符串”格式的问题:set xlsconn=CreateObject("ADODB.Connection") ...

  4. 使用xlrd模块从excel文件中导入数据

  5. 利用java反射机制实现读取excel表格中的数据

    如果直接把excel表格中的数据导入数据库,首先应该将excel中的数据读取出来. 为了实现代码重用,所以使用了Object,而最终的结果是要获取一个list如List<User>.Lis ...

  6. Jmeter----读取excel表中的数据

    Jmeter 读取excel数据使用的方法是使用CSV Data Set Config参数化,之后使用BeanShell Sampler来读取excel表中的数据 第一步.查看所需的接口都要哪些字段和 ...

  7. Xlrd模块读取Excel文件数据

    Xlrd模块使用 excel文件样例:

  8. Aspose.cells 读取Excel表中的图片问题

    一.说明 本文主要是讲解,怎么使用aspose.cells读取Excel表中的图片,并把图片转换成流或是image对象. 二.开发环境说明 开发工具vs2012,c#语言, 三.Aspose.cell ...

  9. 复制excel表,往excel表中写入数据

    import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import jav ...

随机推荐

  1. eclipse&myeclipse 生成jar包后,spring无法扫描到bean定义

    问题:eclipse&myeclipse 生成jar包后,spring无法扫描到bean定义 在使用getbean或者扫包时注入bean失败,但在IDE里是可以正常运行的? 原因:导出jar未 ...

  2. JavaScript如何实现日期的前一天后一天转变

    1.生成时间 var data =new Date(); 2.获得时间戳     什么是时间戳? 时间戳是指格林威治时间自1970年1月1日(00:00:00 GTM)至当前时间的总秒数.它也被称为U ...

  3. jdk 1.6 新特性

    JDK1.6新特性 1.DestTop类和SystemTray类 前者用于调度操作系统中的一些功能,例如: · 可以打开系统默认浏览器指定的URL地址: · 打开系统默认邮件客户端给指定的邮箱发信息: ...

  4. [原创]Ladon5.7大型内网渗透综合漏洞扫描器

    Ladon LadonGUI Cobalt Strike PowerLadon PythonLadon LinuxLadon 使用说明 ID 主题 URL 1 Ladon文档主页 https://gi ...

  5. Hystrix实现ThreadLocal上下文的传递 转

    springcloud微服务中, 服务间传输全局类参数,如session信息等. 一.问题背景 Hystrix有2个隔离策略:THREAD以及SEMAPHORE,当隔离策略为 THREAD 时,是没办 ...

  6. C++连接SQL

    1.引入ADO#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename( ...

  7. FusionInsight大数据开发---Oozie应用开发

    Oozie应用开发 要求: 了解Oozie应用开发适用场景 掌握Oozie应用开发 熟悉并使用Oozie常用API Oozie简介 Oozie是一个Hadoop作业的工作流调度管理系统 Oozie工作 ...

  8. Java的常用API之包装类简介

    包装类 包装类: 基本数据类型,使用起来非常方便,但是没有对应的方法来操作这些基本类型的数据可以使用一个类,把基本类型的数据装起来,在类中定义一些方法,这个类叫做包装类,我们可以使用类中的方法来操作这 ...

  9. golang 源码文件

    Go源码文件分三个种类: 1)命令源码文件:如果一个源码文件被声明属于main代码包,且该文件代码中包含无参数声明和结果声明的main函数,则它就是命令源码文件.命令源码文件可以通过go run命令直 ...

  10. Logstash配置文件修改自动加载和指定目录进行启动

    检查配置并启动Logstash,修改后自动加载 指定配置文件目录并启动Logstash