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框架中的ORM建立查询API
Apr 20 Python
Python实现读取并保存文件的类
May 11 Python
Python获取系统所有进程PID及进程名称的方法示例
May 24 Python
解决csv.writer写入文件有多余的空行问题
Jul 06 Python
使用python验证代理ip是否可用的实现方法
Jul 25 Python
如何在python字符串中输入纯粹的{}
Aug 22 Python
Python3爬虫使用Fidder实现APP爬取示例
Nov 27 Python
python处理两种分隔符的数据集方法
Dec 12 Python
python实现在遍历列表时,直接对dict元素增加字段的方法
Jan 15 Python
浅谈Django2.0 加xadmin踩的坑
Nov 15 Python
Python中import导入不同目录的模块方法详解
Feb 18 Python
python GUI库图形界面开发之PyQt5滚动条控件QScrollBar详细使用方法与实例
Mar 06 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中array_merge与array+array的区别
2013/06/21 PHP
利用PHP函数计算中英文字符串长度的方法
2014/11/11 PHP
php实现的美国50个州选择列表实例
2015/04/20 PHP
PHP中多线程的两个实现方法
2016/10/14 PHP
Android AsyncTack 异步任务实例详解
2016/11/02 PHP
再论Javascript的类继承
2011/03/05 Javascript
基于jQuery的获取标签名的代码
2012/07/16 Javascript
js多级树形弹出一个小窗口层(非常好用)实例代码
2013/03/19 Javascript
JS小功能(操作Table--动态添加删除表格及数据)实现代码
2013/11/28 Javascript
关闭页面window.location事件未执行的原因及解决方法
2014/09/01 Javascript
jQuery基于json与cookie实现购物车的方法
2016/04/15 Javascript
BootStrap轻松实现微信页面开发代码分享
2016/10/21 Javascript
Bootstrap基本插件学习笔记之轮播幻灯片(23)
2016/12/08 Javascript
浅谈JavaScript异步编程
2017/01/20 Javascript
详解Vue使用 vue-cli 搭建项目
2017/04/20 Javascript
jQuery+vue.js实现的九宫格拼图游戏完整实例【附源码下载】
2017/09/12 jQuery
javascript/jquery实现点击触发事件的方法分析
2019/11/11 jQuery
vue仿淘宝滑动验证码功能(样式模仿)
2019/12/10 Javascript
JS addEventListener()和attachEvent()方法实现注册事件
2021/01/11 Javascript
Python制作CSDN免积分下载器
2015/03/10 Python
Python tkinter label 更新方法
2018/10/11 Python
带你认识Django
2019/01/15 Python
Python redis操作实例分析【连接、管道、发布和订阅等】
2019/05/16 Python
python实现WebSocket服务端过程解析
2019/10/18 Python
pytorch载入预训练模型后,实现训练指定层
2020/01/06 Python
Python实现列表索引批量删除的5种方法
2020/11/16 Python
python向xls写入数据(包括合并,边框,对齐,列宽)
2021/02/02 Python
HTML5的文档结构和新增标签完全解析
2017/04/21 HTML / CSS
亚洲在线旅行门户网站:Expedia.com.hk(智游网)
2020/04/14 全球购物
自我评价范文分享
2014/01/04 职场文书
大学毕业生推荐信
2014/07/09 职场文书
群众路线个人自我剖析材料
2014/10/07 职场文书
2016年公司新年寄语
2015/08/17 职场文书
python中的3种定义类方法
2021/11/27 Python
一文了解MYSQL三大范式和表约束
2022/04/03 MySQL
python中 Flask Web 表单的使用方法
2022/05/20 Python