时间:2020.12.02

环境:Python3

目的:使用xlrd读取Excel文件的一般操作

说明:

作者:Zhong QQ交流群:121160124 欢迎加入!

安装xlrd

pip install -i https://pypi.douban.com/simple xlrd

准备演示使用的excel文件 demo.xlsx 写入以下的测试数据

ID 姓名 年龄 登记日期
1 小A 1 2020.12.02
2 小B 2 2020.12.03
3 小C 3 2020.12.04
4 小D 4 2020.12.05
5 小E 5 2020.12.06
6 小F 6 2020.12.07
7 小G 7 2020.12.08
8 小H 8 2020.12.09
9 小I 9 2020.12.10
10 小J 10 2020.12.11
11 小K 11 2020.12.12
12 小L 12 2020.12.13
13 小M 13 2020.12.14
14 小N 14 2020.12.15
15 小O 15 2020.12.16
16 小P 16 2020.12.17
17 小Q 17 12/18/2020
18 小R 18 12/19/2020
19 小S 19 2020年12月20
20 小T 20 2020年12月21日

如图

以上写入了默认的Sheet表Sheet1表21行4列的数据 第一行为标题行 登记日期写入的数据有不同的单元格类型  以下是常用的一些基本操作

import xlrd
from xlrd import xldate_as_datetime
from pprint import pprintdef readExcel(path) -> dict:# 打开Excel表格  文件名和表名都需要正确ExcelFile = xlrd.open_workbook(path)# 获取SheetSheet1 = ExcelFile.sheet_by_name('Sheet1')  # 通过名称获取Sheet# Sheet1 = ExcelFile.sheet_by_index(0)  # 通过索引获取Sheet# Sheet属性  获取Shee1的名称、总行数、总列数等信息sheet_name = Sheet1.name  # 名称sheet_nrows = Sheet1.nrows  # 行数sheet_ncols = Sheet1.ncols  # 列数print(" Sheet名称: %s\n" % sheet_name, "Sheet总行数: %s\n" % sheet_nrows, "Sheet总列数: %s\n" % sheet_ncols)print("\n" + "* " * 100)# Sheet单元格属性cell  对一个具体的单元格操作  如获取第2行第2列单元格数据值cell_value1 = Sheet1.cell(1, 1).value  # cell的值cell_value2 = Sheet1.cell_value(1, 1)  # cell值 等效于cell().valuecell_type = Sheet1.cell_type(1, 1)print("一个单元格内容: \n%s" % cell_value1)print("一个单元格内容: \n%s" % cell_value2)print("一个单元格内容类型: \n%s" % cell_type)print("\n" + "* " * 100)# Sheet获取一行的数据和一列的数据及相关属性row_value = Sheet1.row(1)  # 获取第2行的数据 值的类型有标注  [number:1.0, text:'小A', number:1.0, text:'2020.12.02']row_slice_value = Sheet1.row_slice(rowx=1, start_colx=0, end_colx=None)  # row()方法的扩展 可指定范围row_values = Sheet1.row_values(rowx=1, start_colx=0, end_colx=None)  # 一行数据 rowx:第几行 start_colx:从第几列开始 end_colx:到第几列结束(None 表示到最后一列) 类似于字符串split方法的概念row_len = Sheet1.row_len(1)  # 获取第二行长度(至有数据的最后一列的长度)row_types = Sheet1.row_types(rowx=1, start_colx=0, end_colx=None)  # 获取一行数据的类型table_header = Sheet1.row_values(rowx=0, start_colx=0, end_colx=None)  # 获取标题单元格(第一行)print("一行的值(带类型): \n%s" % row_value)print("一行指定开始和结束范围的值(带类型): \n%s" % row_slice_value)print("一行指定开始和结束范围的值: \n%s" % row_values)print("一行数据的长度: \n%s" % row_len)print("一行数据的类型: \n%s" % row_types)print("第一行的内容为: \n%s" % table_header)print("\n" + "* " * 100)# 获取Sheet所有内容 格式为[[row_values], [row_values], ...... ]ls = []  # 定义一个列表用来存储所有的行数据for row in range(1, sheet_nrows):  # 从第2行开始  第1行一般是表头 以实际情况为准# 获取一行的值  为列表类型values = Sheet1.row_values(rowx=row, start_colx=0, end_colx=None)# 获取登记日期列的单元格内容类型ctype = Sheet1.cell_type(rowx=row, colx=3)# 处理ctype类型值为2/3的日期类型为期望类型if ctype in [2, 3]:# 转换为年月日格式的类型  datemode参数为时间基准标识符 0代表1900-01-01为基准,1代表1904-01-01为基准 通常选择0_date = xldate_as_datetime(xldate=Sheet1.cell_value(rowx=row, colx=3), datemode=0).strftime("%Y-%m-%d")values[3] = _date# print(values)ls.append(values)pprint(ls)print("\n" + "* " * 100)return {"msg": "ok"}# 文件的路径,如果路径或者文件名有中文前面加一个r代表原生字符。
res = readExcel(r"C:\Users\Zhong\Desktop\demo.xlsx")print(res)

Note

  1. 索引是从(0, 0)开始
  2. 一般excel文件中获取数据的内容时内容部分是从第二行开始
  3. 单元格内容类型一般有0-6 7种类型  如下
Type symbol Type number Python value
XL_CELL_EMPTY 0 empty string ''
XL_CELL_TEXT         1 a Unicode string
XL_CELL_NUMBER         2 float
XL_CELL_DATE         3 float
XL_CELL_BOOLEAN         4 int; 1 means TRUE, 0 means FALSE
XL_CELL_ERROR         5 int representing internal Excel codes; for a text representation, refer to the supplied dictionary error_text_from_code
XL_CELL_BLANK         6 empty string ''. Note: this type will appear only when open_workbook(..., formatting_info=True) is used

加入qq群交流技术  关注微信公众号

Zhong__xlrd基本使用相关推荐

最新文章

  1. 两亿多用户,六大业务场景,知乎AI用户模型服务性能如何优化?
  2. 2018最后一个月的Python热文Top10!赶紧学起来~
  3. Windows下本机简易监控系统搭建(Telegraf+Influxdb+Grafana)
  4. atmega8a如何烧写程序_如何让树莓派4上固件的debug日志输出到串口?
  5. asp.net mvc 正常支持Fckeditor编辑器
  6. 将Wiremock集成到Spring Boot Java Web应用程序中以模拟外部依赖关系
  7. nodejsmongoangularjs
  8. Linux更换软件源(国内)阿里云
  9. 【HDOJ】4363 Draw and paint
  10. 【进阶3-5期】深度解析 new 原理及模拟实现
  11. 95-848-020-源码-AKKA-Akka与Actor 模型
  12. Serverless 开发者平台
  13. 计算机人力资源试题及答案,计算机二级word练习题一题目及答案.
  14. gimp中文版教程_GIMP视频教程集合(中文+英文)下载 | 卧云楼
  15. Axure统计图表设计(Excel设计统计图表、HighChart设计统计图表)
  16. 淘宝手淘首页金字塔流量爬升法|运营狗
  17. java商城有怎么样的优势,关于java商城系统的优势介绍
  18. Jenkins使用FTP上传文件报错问题处理
  19. Obi - Advanced Rope Simulation 绳索插件学习文档
  20. 计算机毕设Python+Vue医院人事及科室病区管理(程序+LW+部署)

热门文章

  1. 远行星号 java_不纠结刷种子了,duzahk.java里面直接加了点东西。
  2. 牛客算法課 (算法入門班) 貪心與模擬(4)
  3. \t\t12时辰养生
  4. 全球及中国多普勒导航仪行业投资分析及前景预测报告2022-2028年
  5. 【eoe源码索引】2014年3月份源码索引贴
  6. WPF 窗口最大化正确方法
  7. Cell Reports : 人脑中的湍流状动力学
  8. cmd批量修改文件名 增加文字_文件名如何进行批量更改?
  9. rabbitmq java 重连_RabbitMQ Java客户端自动重新连接
  10. 计算机一级无法打开office,电脑中无法运行Office2016的两种解决方法