python中xlrd模块的使用详解
作者:宣小飞 发布时间:2021-02-13 12:05:27
标签:python,xlrd模块
一、xlrd的安装
打开cmd输入pip install xlrd安装完成即可
二、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
来源:https://blog.csdn.net/xuanfeifei/article/details/113427815


猜你喜欢
- 本文实例讲述了php下pdo的mysql事务处理用法。分享给大家供大家参考。具体分析如下:php+mysql事务处理的几个步骤:1.关闭自动
- 如果你经常浏览网页一定见过很多网站在form表单中的文本域(textarea)中添加了的背景图片,一般是使用网站的logo,我记得我最早注意
- 首先,到底什么是网络服务器?简而言之,它是在物理服务器上搭建的一个网络连接服务器(networking server),永久地等待客户端发送
- 这篇文章主要介绍了Python命令行click参数用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要
- 如下所示:update-alternatives --config python一条简单的命令,如下图所示:来源:https://blog.
- Logminer是每个Dba都应熟悉的工具,当一天由于用户的误操作你需要做不完全的恢复时,由于你无法确定这个操作是哪个时间做的,所以这对你的
- Boundary MatchersJava regex API还支持边界匹配。如果我们关心在输入文本中匹配的确切位置,那么这就是我们要寻找的
- 1、打开Sqlserver,选择登录名下的账户右击点击属性2、右击点击属性查看强制过期是否被勾选上,如勾选上,会在一段时间后该账户不能正常使
- insertRow() 方法定义和用法 insertRow() 方法用于在表格中的指定位置插入一个新行。语法tableObject.inse
- click() 对象.click() 使对象被点击。 closed 对象.closed 对象窗口是否已关闭true/false clearT
- 介绍在本文中,你将学习如何使用 Python 构建人脸识别系统。人脸识别比人脸检测更进一步。在人脸检测中,我们只检测人脸在图像中的位置,但在
- 我们进行CSS网页布局的时候,都知道它需要符合XHTML1.0规范。如果我们在进行CSS网页布局的时候,还在使用被W3C废弃的元素,那就失去
- round()方法返回 x 的小数点四舍五入到n个数字。语法以下是round()方法的语法:round( x [, n] )参数
- 有两种做法:os.walk()、pathlib库,个人感觉pathlib库的path.glob用来匹配文件比较简单。下面是第二种做法的实例(
- 要防止同一用户同时登陆,首页应该记录在线用户的信息(这里与用户名为例),然后判断正在登陆的用户里面是否已存在。在这里使用一个cache存放已
- 本文总结一下,拖拽所延伸出来的一些效果,供大家参考,具体内容如下1.实现拖拉图片时,带框的效果。即当鼠标拖动某一个图片或物体时,其原有位置扔
- 前言for...in 是Python程序员使用最多的语句,for 循环用于迭代容器对象中的元素,这些对象可以是列表、元组、字典、集合、文件,
- 一、类和对象通俗理解:类就是模板,对象就是通过模板创造出来的物体类(Class)由3个部分构成:类的名称: 类名类的属性: 一组数据类的方法
- 1. 手动操作1.1. 显示模块pip list1.2. 显示过期模块pip list --outdated1.3. 安装模块pip ins
- asp替换函数如下:Function ReplaceNoIgnoreCase(str,replStr) &n