网站首页 > java教程 正文
python读excel——xlrd
一、安装xlrd模块
py -3 -m pipinstall xlrd 或者python –mpip install xlrd,如下图:
二、实际操作:
整体思路为à打开文件,选定表格,读取行列内容,读取表格内数据;
以下图为例:
1.打开文件:
data=xlrd.open_workbook(r"E:\pythonTester\info.xlsx")
2.选定表格:
#print (data.sheet_names()) 若有多个工作表,可通过此代码打印所有表格的名称
sheet1=data.sheet_by_index(0) #索引读取
sheet2=data.sheet_by_name("年级") #姓名读取
sheets=data.sheets()[0] #函数读取
3.统计表中的行数、列数:
rows=sheet1.nrows
cols=sheet1.ncols
4.打印表格中整行整列的内容
print (sheet1.row_values(0)) #打印第一行的内容
print (sheet1.col_values(1)) #打印第二列的内容
5.读取表格内的数据
#按单元格读取
print (sheet1.cell(0,1).value) à第1行第2列中的内容
print (sheet1.cell_value(0,1))
#按列读取
print (sheet1.col_value(1)[0]) à第2列第1行的内容
#按行读取
print (sheet1.row_value(1)[0]) à第2行第1列的内容
存在两个问题:上面的运行结果中红框框中的字段明明是出生日期,可显示的确实浮点数;同时合并单元格里面应该是有内容的,结果不能为空。
三、解决问题
1.python读取excel中单元格内容为日期的方式
python读取excel中单元格的内容返回的有5种类型,即上面例子中的ctype:
ctype : 0 empty,1 string,2 number, 3 date,4 boolean,5 error
即date的ctype=3,这时需要使用xlrd的xldate_as_tuple来处理为date格式,先判断表格的ctype=3时xldate才能开始操作。
import xlrd
from datetime import date,datetime
print (sheet1.cell(1,2).ctype)
data_value=xlrd.xldate_as_tuple(sheet1.cell(1,2).value,data.datemode)
print (data_value)
print (date(*data_value[:3]))
print ((date(*data_value[:3])).strftime('%Y%m%d'))
2.获取合并单元格的内容
在操作之前,先介绍一下merged_cells()用法,merged_cells返回的这四个参数的含义是:(row,row_range,col,col_range),其中[row,row_range)包括row,不包括row_range,col也是一样,即(1, 3,4, 5)的含义是:第1到2行(不包括3)合并,(7, 8, 2, 5)的含义是:第2到4列合并。
print (sheet1.merged_cells)
print (sheet1.cell_value(6,1))
print (sheet1.cell_value(4,3))
运行结果如下:
从上面可以发现,获取merged_cells返回的row和col低位的索引即可!然后可以批量获取,详细代码如下:
merge=[]
for (rlow,rhigh,clow,chigh) in sheet1.merged_cells:
merge.append([rlow,clow])
此时merge为[[6, 1], [4, 3]]
for index in merge:
#print (index[0],index[1]) #6 1;4 3
print (sheet1.cell_value(index[0],index[1]))
运行结果如下
python操作读取excel表格的内容就讲到这里,更多精彩内容详细了解尚学堂!另外,求花花求关注啊!
猜你喜欢
- 2024-10-08 「开源」阿里出品,可避免OOM的java处理Excel工具包
- 2024-10-08 使用Java实现Excel数据采集及后台统计功能
- 2024-10-08 java百万千万级别excel导出问题(导出慢和Out Of Memory内存溢出)
- 2024-10-08 利用阿里EasyExcel实现Excel读写(阿里云表格识别)
- 2024-10-08 java轻松玩转Excel之EasyExcel(java excelutil)
- 2024-10-08 「开源资讯」MyExcel 3.8.1 版本发布,Excel等多项功能的工具包
- 2024-10-08 Java 复制Excel单元格区域(java复制粘贴)
- 2024-10-08 Excel神具EasyExcel,常见API(excel.app)
- 2024-10-08 三层-使用NPOI读取Excel文件的数据 183
- 2024-10-08 每天一个入坑小技巧:通过poi、poi-ooxml框架读取不同格式excel
你 发表评论:
欢迎- 最近发表
-
- pyinstaller打包python程序高级技巧
- 将python打包成exe的方式(python打包成exe的方法)
- Python打包:如何将 Flask 项目打包成exe程序
- py2exe实现python文件打包为.exe可执行程序(上篇)
- 如何将 Python 项目打包成 exe,另带卸载功能!
- Python打包成 exe,太大了该怎么解决?
- 可视化 Python 打包 exe,这个神器绝了!
- 案例详解pyinstaller将python程序打包为可执行文件exe
- Cocos 3.x 菜鸟一起玩:打包window程序
- 怎么把 Python + Flet 开发的程序,打包为 exe ?这个方法很简单!
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)