当前位置:网站首页>xlrd常见操作
xlrd常见操作
2022-07-05 21:20:00 【林仔520】
0. 导言
笔者前期在做项目时,使用第三方python库openpyxl来读取excel文件,但是当数据量非常大时,代码执行时间非常缓慢。基于此,笔者查阅相关资料,发现使用xlrd能大幅度提升Python读取excel的效率。
1. xlrd和xlwt包安装
pip install xlrd
pip install xlwt
2. xlrd包使用
# 导包
import xlrd
# 数据文件
data_file = '../数据/轨道电路基础数据1.xlsx'
# 主函数
if __name__ == "__main__":
''' 1. 打开文件 '''
wb = xlrd.open_workbook(data_file)
print("==========================================================================")
''' 2. 获取sheet对象 '''
print("\n++++++++++++++++++++++++ 2. 获取sheet对象 ++++++++++++++++++++++++\n")
# 1. 获取所有sheet名字
sheet_names = wb.sheet_names()
print("sheet_names:", sheet_names)
# 2. 获取sheet数量
sheet_number = wb.nsheets
print("sheet_number:", sheet_names)
# 3. 获取所有sheet对象
sheet_objct = wb.sheets()
print(sheet_objct)
# 4. 通过sheet名查找
sheet_by_name = wb.sheet_by_name("基础数据")
print("sheet_by_name:", sheet_by_name)
# 5. 通过索引查找(从0开始)
sheet_by_index = wb.sheet_by_index(0)
print("sheet_by_index:", sheet_by_index)
print("==========================================================================")
''' 3. 获取sheet的汇总数据 '''
print("\n++++++++++++++++++++++++ 3. 获取sheet的汇总数据 ++++++++++++++++++++++++\n")
sheet = wb.sheet_by_index(0)
# 1. 获取sheet名
sheet_name = sheet.name
print("sheet_name:", sheet_name)
# 2. 获取sheet总列数
num_cols = sheet.ncols
print("num_cols:", num_cols)
# 3. 获取sheet总行数
num_rows = sheet.nrows
print("num_rows:", num_rows)
print("==========================================================================")
''' 4. 单元格批量读取 '''
# a.行操作
print("\n++++++++++++++++++++++++ 4. 单元格批量读取 —— 行操作 ++++++++++++++++++++++++\n")
# 1. 获取第一行所有内容
row_1_values = sheet.row_values(0)
print("第一行所有内容:",row_1_values)
# 2. 获取单元格值类型和内容
row_1 = sheet.row(0)
print("单元格值类型和内容:",row_1)
# 3. 获取单元格数据类型
row_1_type = sheet.row_types(0)
print("获取单元格数据类型:",row_1_type)
print("==========================================================================")
# b. 表操作
print("\n++++++++++++++++++++++++ 4. 单元格批量读取 —— 表操作 ++++++++++++++++++++++++\n")
# 1. 取第1行,第6~10列
result1 = sheet.row_values(0, 6, 10)
print("第1行,第6~10列:", result1)
# 2. 取第一列,第0~5行
result2 = sheet.col_values(0, 0, 5)
print("第一列,第0~5行:", result2)
# 3. 获取单元格值类型和内容
result3 = sheet.row_slice(2, 0, 2)
print("单元格值类型和内容:", result3)
# 4. 获取单元格数据类型
result4 = sheet.row_types(1, 0, 2)
print("单元格数据类型:", result4)
print("==========================================================================")
''' 5. 特定单元格读取 '''
# a.获取单元格值
print("\n++++++++++++++++++++++++ 5. 特定单元格读取 —— 获取单元格值 ++++++++++++++++++++++++\n")
result1 = sheet.cell_value(1, 2)
print("sheet.cell_value(1, 2):", result1)
result2 = sheet.cell(1,2).value
print("sheet.cell(1,2).value:", result2)
result3 = sheet.row(1)[2].value
print("sheet.row(1)[2].value:", result3)
print("==========================================================================")
# b.获取单元格类型
print("\n++++++++++++++++++++++++ 5. 特定单元格读取 —— 获取单元格类型 ++++++++++++++++++++++++\n")
result1 = sheet.cell(1,2).ctype
print("sheet.cell(1,2).ctype:", result1)
result2 = sheet.cell_type(1,2)
print("sheet.cell_type(1,2):", result2)
result3 = sheet.row(1)[2].ctype
print("sheet.row(1)[2].ctype:", result3)
''' 6. 常见的一些转换 '''
print("\n++++++++++++++++++++++++ 6. 常见的一些转换 ++++++++++++++++++++++++\n")
# (0,0)转换成A1
result1 = xlrd.cellname(0,0)
print("(0,0)转换成A1:", result1)
# (0,0)转换成$A$1
result2 = xlrd.cellnameabs(0,0)
print("(0,0)转换成$A$1:", result2)
# 把列由数字转换为字母表示
result3 = xlrd.colname(40)
print("把列由数字转换为字母表示:xlrd.colname(40): ", result3)
2. 程序运行结果
边栏推荐
- 张丽俊:穿透不确定性要靠四个“不变”
- selenium 查找b或p标签的内容
- Clion configures Visual Studio (MSVC) and JOM multi-core compilation
- Wood board ISO 5660-1 heat release rate mapping test
- Teach yourself to train pytorch model to Caffe (I)
- Dictionary tree simple introductory question (actually blue question?)
- Haas506 2.0 development tutorial - Alibaba cloud OTA - PAC firmware upgrade (only supports versions above 2.2)
- Write an interface based on flask
- R language [data management]
- ArcGIS\QGIS无插件加载(无偏移)MapBox高清影像图
猜你喜欢
Interviewer: will concurrent programming practice meet? (detailed explanation of thread control operation)
uni-app 蓝牙通信
Teach yourself to train pytorch model to Caffe (2)
张丽俊:穿透不确定性要靠四个“不变”
MySQL 千万数据量深分页优化, 拒绝线上故障!
MySQL InnoDB Architecture Principle
Opérations de lecture et d'écriture pour easyexcel
Chapter 05_ Storage engine
使用WebAssembly在浏览器端操作Excel
学习机器人无从下手?带你体会当下机器人热门研究方向有哪些
随机推荐
启牛2980有没有用?开户安全吗、
R语言【数据管理】
木板ISO 5660-1 热量释放速率摸底测试
Monorepo management methodology and dependency security
【案例】定位的运用-淘宝轮播图
shell编程100例
Vant source code parsing event Detailed explanation of TS event processing global function addeventlistener
EasyExcel的读写操作
Learning robots have no way to start? Let me show you the current hot research directions of robots
树莓派4B上ncnn转换出来的模型调用时总是崩溃(Segment Fault)的原因
Prior knowledge of machine learning in probability theory (Part 1)
Learning notes of SAS programming and data mining business case 19
Introduction of ArcGIS grid resampling method
selenium 获取dom内属性值的方法
概率论机器学习的先验知识(上)
Five layer network protocol
【日常训练--腾讯精选50】89. 格雷编码(看题解才会的)
vant 源码解析 event.ts 事件处理 全局函数 addEventListener详解
Écrire une interface basée sur flask
面试官:并发编程实战会吗?(线程控制操作详解)