python中xlrd模块的使用详解


Posted in Python onFebruary 01, 2021

一、xlrd的安装

打开cmd输入pip install xlrd安装完成即可

python中xlrd模块的使用详解

二、xlrd模块的使用

下面以这个工作簿为例

python中xlrd模块的使用详解

1、导入模块

import xlrd

2、打开工作薄

# filename是文件的路径名称
workbook = xlrd.open_workbook(filename=r'C:\Users\Windows10\Desktop\xlsx文件.xlsx')

3、获取需要操作的sheet表格(有三种方法)

①通过索引获取

# 获取第一个sheet表格
table = workbook.sheets()[0]

②通过索引顺序获取

# 通过索引顺序获取
table = workbook.sheet_by_index(0)

③通过sheet名称获取

# 通过sheet名称获取
table = workbook.sheet_by_name(sheet_name='Sheet1')

补充:获取工作薄中所有sheet名称

# 获取工作薄中所有的sheet名称
names = workbook.sheet_names()

打印结果
['Sheet1', 'Sheet2', 'Sheet3']

三、行和列的操作

常用1:获取sheet中有多少行和多少列

# 获取sheet中有效行数
row = table.nrows
print(row)
打印结果6
# 获取sheet中有效列数
col = table.ncols
print(col)

打印结果
4

常用2:获取一行中有多少列数据

# 返回该行的有效单元格长度
num = table.row_len(0)
print(num)

打印结果
4

常用3:获取指定行或者列中所有的数据

# rowx表示是获取第几行的数据
# start_col表示从索引为多少开始,end_colx表示从索引为多少结束,
# end_colx为None表示结束没有限制
# 获取指定行中的数据并以列表的形式返回
table_list = table.row_values(rowx=0, start_colx=0, end_colx=None)
print(table_list)

打印结果
['渡劫(送千万元宝)', '新手礼包', '主角技能书*20,三级攻击石*2,萌新相框*1', 'nesHtg6Y']
# colx表示是获取第几列的数据
# start_rowx表示从索引为多少开始,end_rowx表示从索引为多少结束,
# end_rowx为None表示结束没有限制
# 获取指定列中的数据并以列表的形式返回
table_list = table.col_values(colx=0, start_rowx=0, end_rowx=None)
print(table_list)

打印结果
['渡劫(送千万元宝)', '渡劫(送千万元宝)', '渡劫(送千万元宝)', '渡劫(送千万元宝)', '名扬沙城-杀猪爆充值', '名扬沙城-杀猪爆充值']

补充:了解即可

#返回由该列中所有的单元格对象组成的列表
print(table.row(0)) 
#返回由该行中所有的单元格对象组成的列表
print(table.row_slice(0)) 
#返回由该行中所有单元格的数据类型组成的列表
print(table.row_types(0, start_colx=0, end_colx=None)) 

打印结果
[text:'渡劫(送千万元宝)', text:'新手礼包', text:'主角技能书*20,三级攻击石*2,萌新相框*1', text:'nesHtg6Y']
[text:'渡劫(送千万元宝)', text:'新手礼包', text:'主角技能书*20,三级攻击石*2,萌新相框*1', text:'nesHtg6Y']
array('B', [1, 1, 1, 1])
#返回由该列中所有的单元格对象组成的列表
print(table.col(0, start_rowx=0, end_rowx=None)) 
#返回由该列中所有的单元格对象组成的列表
print(table.col_slice(0, start_rowx=0, end_rowx=None)) 
#返回由该列中所有单元格的数据类型组成的列表
print(table.col_types(0, start_rowx=0, end_rowx=None)) 

打印结果
[text:'渡劫(送千万元宝)', text:'渡劫(送千万元宝)', text:'渡劫(送千万元宝)', text:'渡劫(送千万元宝)', text:'名扬沙城-杀猪爆充值', text:'名扬沙城-杀猪爆充值']
[text:'渡劫(送千万元宝)', text:'渡劫(送千万元宝)', text:'渡劫(送千万元宝)', text:'渡劫(送千万元宝)', text:'名扬沙城-杀猪爆充值', text:'名扬沙城-杀猪爆充值']
[1, 1, 1, 1, 1, 1]

四、单元格的操作

1、获取单元中的值

# 获取指定单元格内的值
value = table.cell_value(rowx=0, colx=1)
print(value)

打印结果
新手礼包

2、获取单元格内的组成对象和数据

value = table.cell(rowx=0, colx=1)
print(value)

打印结果
text:'新手礼包'

3、获取单元格的数据类型

python读取excel中单元格的内容返回的有5种类型。ctype : 0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error。即date的ctype=3,这时需要使用xlrd的xldate_as_tuple来处理为date格式,先判断表格的ctype=3时xldate才能开始操作。

value = table.cell_type(rowx=0, colx=1)
print(value)

五、案例

需求:获取上面表格中的数据并依次打印出来

import xlrd

# 打开工作薄
workbook = xlrd.open_workbook(r'C:\Users\Windows10\Desktop\xlsx文件.xlsx')
# 获取第一个sheet表格
table = workbook.sheets()[0]
# 获取行数
rows = table.nrows
# 获取列数
cols = table.ncols
# 循环获取每行的数据
for row in range(rows):
 for col in range(cols):
  value = table.cell_value(row, col)
  print('第{}行{}列的数据为:{}'.format(row, col, value))

打印结果
第0行0列的数据为:渡劫(送千万元宝)
第0行1列的数据为:新手礼包
第0行2列的数据为:主角技能书*20,三级攻击石*2,萌新相框*1
第0行3列的数据为:nesHtg6Y
第1行0列的数据为:渡劫(送千万元宝)
第1行1列的数据为:特权礼包
第1行2列的数据为:翅膀进阶丹*20,翅膀技能书*10,萌新气泡*1
第1行3列的数据为:QqBSc7VJ
第2行0列的数据为:渡劫(送千万元宝)
第2行1列的数据为:独家礼包
第2行2列的数据为:高级生命精华*10,升星石*20,法宝灵纹石*10
第2行3列的数据为:NqsEdtBt
第3行0列的数据为:渡劫(送千万元宝)
第3行1列的数据为:预约礼包
第3行2列的数据为:高级攻击精华*10,生命神兵印记包*5,老司机气泡*1
第3行3列的数据为:P22vY6wa
第4行0列的数据为:名扬沙城-杀猪爆充值
第4行1列的数据为:万元青龙
第4行2列的数据为:凌霄青龙*1
第4行3列的数据为:NB999
第5行0列的数据为:名扬沙城-杀猪爆充值
第5行1列的数据为:尊贵VIP11
第5行2列的数据为:5元*2、神羽*20、斗笠石(中)*20
第5行3列的数据为:VIP999

到此这篇关于python中xlrd模块的使用详解的文章就介绍到这了,更多相关python xlrd模块内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python django 实现验证码的功能实例代码
May 18 Python
Python cookbook(数据结构与算法)通过公共键对字典列表排序算法示例
Mar 15 Python
在Django中输出matplotlib生成的图片方法
May 24 Python
详解如何在Apache中运行Python WSGI应用
Jan 02 Python
[机器视觉]使用python自动识别验证码详解
May 16 Python
PyQt5 QTableView设置某一列不可编辑的方法
Jun 25 Python
Python为何不能用可变对象作为默认参数的值
Jul 01 Python
python 列表推导式使用详解
Aug 29 Python
OpenCV Python实现拼图小游戏
Mar 23 Python
python实现遍历文件夹图片并重命名
Mar 23 Python
完美解决pyinstaller打包报错找不到依赖pypiwin32或pywin32-ctypes的错误
Apr 01 Python
用Python写一个简易版弹球游戏
Apr 13 Python
python中使用np.delete()的实例方法
Feb 01 #Python
flask框架中的cookie和session使用
Jan 31 #Python
Flask处理Web表单的实现方法
Jan 31 #Python
Django中如何用xlwt生成表格的方法步骤
Jan 31 #Python
Django中template for如何使用方法
Jan 31 #Python
python中os.remove()用法及注意事项
Jan 31 #Python
python os.listdir()乱码解决方案
Jan 31 #Python
You might like
PHP单例模式详细介绍
2015/07/01 PHP
ThinkPHP路由详解
2015/07/27 PHP
php无限分类使用concat如何实现
2015/11/05 PHP
Javascript面象对象成员、共享成员变量实验
2010/11/19 Javascript
js 得到文件后缀(通过正则实现)
2013/07/08 Javascript
javascript中的变量作用域以及变量提升详细介绍
2013/10/24 Javascript
原生js实现日期联动
2015/01/12 Javascript
javascript修改图片src的方法
2015/01/27 Javascript
JS实现点击复选框将按钮或文本框变为灰色不可用的方法
2015/08/11 Javascript
Bootstrap实现弹性搜索框
2016/07/11 Javascript
关于JavaScript数组你所不知道的3件事
2016/08/24 Javascript
easyUI实现(alert)提示框自动关闭的实例代码
2016/11/07 Javascript
基于JS实现的随机数字抽签实例
2016/12/08 Javascript
JavaScript实现反转字符串的方法详解
2017/04/27 Javascript
Javascript实现跨域后台设置拦截的方法详解
2017/08/04 Javascript
微信页面弹出键盘后iframe内容变空白的解决方案
2017/09/20 Javascript
微信小程序如何利用getCurrentPages进行页面传值
2019/07/01 Javascript
vue 通过 Prop 向子组件传递数据的实现方法
2020/10/30 Javascript
使用Django的模版来配合字符串翻译工作
2015/07/27 Python
Python模块结构与布局操作方法实例分析
2017/07/24 Python
python利用有道翻译实现"语言翻译器"的功能实例
2017/11/14 Python
Python+OpenCV实现车牌字符分割和识别
2018/03/31 Python
python定时检测无响应进程并重启的实例代码
2019/04/22 Python
Python argparse模块使用方法解析
2020/02/20 Python
Python基础教程(一)——Windows搭建开发Python开发环境
2020/07/20 Python
navabi英国:设计师大码女装
2019/06/25 全球购物
初始化了一个没有run()方法的线程类,是否会出错?
2014/03/27 面试题
电气自动化大学生求职信
2013/10/16 职场文书
简短证婚人证婚词
2014/01/09 职场文书
音乐教学随笔感言
2014/02/19 职场文书
解除劳动合同协议书
2014/04/14 职场文书
建筑专业毕业生自荐信
2014/05/25 职场文书
月度优秀员工获奖感言
2014/08/16 职场文书
如何写辞职信
2015/05/13 职场文书
致青春观后感
2015/06/09 职场文书
win10下go mod配置方式
2021/04/25 Golang