首页 > 其他分享 >Excel读写之xlrd模块

Excel读写之xlrd模块

时间:2024-09-27 19:01:23浏览次数:10  
标签:01 sheet 1.2 读写 Excel workbook xlrd xldate

1.1、xlrd模块介绍

xlrd:用于读取Excle数据文件将返回的数据对象放到内存中,然后查询数据文件对象的相关信息。

xlwt:用于在内存中生成新的数据文件对象,处理完成后写入到Excel数据文件中。

xlutils:主要的作用就是copy新的文件对象,在新的数据对象中完成数据处理操作。

注意:在使用 xlrd 读取 .xlsx 文件时,由于 xlrd 从版本 2.0.0 开始停止支持 .xlsx 格式,可能会遇到 xlrd.biffh.XLRDError: Excel xlsx file; not supported 的错误。

如果需要读取.xlsx文件,你可能需要安装1.2.0版本的xlrd。

1.2、xlrd操作方法汇总

1.2.1、Excel操作

1.2.1.1、打开文件

import xlrd

workbook = xlrd.open_workbook('test.xls')
print(workbook)  # <xlrd.book.Book object at 0x7f592100ff50>

1.2.1.2、获取所有的表名

import xlrd
 
workbook = xlrd.open_workbook(r'./code/excelRead/test.xls')
# 获取所有的工作表名
sheet_names = workbook.sheet_names()
print(sheet_names)  # ['sdxl', 'hzgg', 'sdyxz', 'TB2018']
# 获取所有的sheet对象
Sheets = workbook.sheets()
print(Sheets)  # [Sheet  0:<sdxl>, Sheet  1:<hzgg>, Sheet  2:<sdyxz>, Sheet  3:<TB2018>]

1.2.1.3、获取指定的Sheet

import xlrd
 
workbook = xlrd.open_workbook(r'./code/excelRead/test.xls')
# 方式一:通过索引选取
sheet1 = workbook.sheets()[0]
print(sheet1 )  # Sheet  0:<sdxl>
 
# 方式二:通过索引选取
sheet2 = workbook.sheet_by_index(2)
print(sheet2)  # Sheet  2:<sdyxz>
 
# 方式三:通过表名选取,返回一个<class 'xlrd.sheet.Sheet'>对象
sheet = workbook.sheet_by_name("hzgg")
print(sheet)  # Sheet  1:<hzgg>

1.2.1.4、某个sheet是否导入完毕

# 通过索引,检查某个sheet是否导入完毕
print(workbook.sheet_loaded(0))  # True
# 通过文件名,检查某个sheet是否导入完毕
print(workbook.sheet_loaded("hzgg"))  # True

1.2.2、sheet对象的基本操作

1.2.2.1、sheet表行操作

1.2.2.1.1、获取表中所有的行数
import xlrd
 
workbook = xlrd.open_workbook(r'./code/excelRead/test.xls')
sheet2 = workbook.sheet_by_name("hzgg")
# 特别注意,这是属性而不是方法,不加括号
print(sheet2.nrows)  # 17
1.2.2.1.2、返回指定行的所有单元格数值组成的列表

1.2.2.1.3、获取某行的类型及数据

1.2.2.1.4、获取某行的类型的列表

单元类型ctype:empty为0,string为1,number为2,date为3,boolean为4, error为5(左边为类型,右边为类型对应的值) 

1.2.2.1.5、以切片形式获取某行的类型及数据
1.2.2.1.6、获取某行的长度
1.2.2.1.7、获取sheet的所有行生成器


1.2.2.2、sheet表列操作

1.2.2.2.1、获取有效列数
import xlrd
 
workbook = xlrd.open_workbook(r'./code/excelRead/test.xls')
sheet2 = workbook.sheet_by_name("hzgg")
# 获取有效列数
print(sheet2.ncols)  # 9
1.2.2.2.2、获取某列数据
1.2.2.2.3、获取某列类型
1.2.2.2.4、以切片方式获取某列类型及数据 

1.2.2.3、单元格操作


1.2.2.4、单元格中的日期/时间操作

在使用xlrd读取excel时,我们常常会遇到日期格式的数据,如果我们不经过任何处理,那么我们得到会是如 45089.0、45171.0 这样的excel时间戳。那么我们该如何读取呢?这里介绍俩方法。

1.2.2.4.1、xlrd.xldate_as_tuple(xldate, datemode)

xlrd.xldate_as_tuple(xldate,datemode)

    :param xldate: 要处理的单元格值,自然是excel中的日期数据

    :param datemode: 使用哪条基准的时间戳(0代表1900-01-01为基准,1代表1904-01-01为基准);常使用1900为基准

返回值:返回一个元组,类似于(year,month,day,hour,minute,nearest_second)

但是,仅适用于date类型的excel单元格,不适用于time类型的单元格,对于time类型的单元格值,报错:XLDateAmbiguous

1.2.2.4.2、xlrd.xldate.xldate_as_datetime(xldate, datemode)

xlrd.xldate.xldate_as_datetime(xldate,datemode)

    :param xldate: 要处理的单元格值,自然是excel中的日期数据

    :param datemode: 使用哪条基准的时间戳(0代表1900-01-01为基准,1代表1904-01-01为基准);常使用1900为基准

返回值:datetime对象,格式 year-month-day hour:minute:second

但是,对于time类型的单元格值,转化后自动以基准补充;如基准选择1900时,时间 13:09:30 转化后为:1900-01-01 23:08:00

 

标签:01,sheet,1.2,读写,Excel,workbook,xlrd,xldate
From: https://www.cnblogs.com/crazywh/p/18436371

相关文章

  • 不用写一行Python代码,“Excel” 能直接爬虫了!
    家人们,要爬虫——现在用一个电子表格就行了。一行代码也别写,第三方软件也甭安。只需在表格里点几下就ok。不信,你瞧:就这么两下,网页上的商品信息都有了。网友看完都惊呆了,码个不停。一看到这是来自谷歌的产品(GoogleSheet,谷歌的“Excel”),大家就立马cue起了微软,问它慌......
  • 给Excel 添加正则表达式regexp()函数
    WPS推出了正则表达式函数regex家族,非常好用,必须给其点赞。听说微软在最新版本的Office也要推出,但老版本Office用户就不能使用这个函数,好在用VBA可以自定义一个函数也可以实现的,此函数不仅将三种模式融合到了同一个函数中,同时还支持数组、单元格、文本等多种数据处理'**************......
  • 构建读写分离的数据库集群
    三、构建读写分离的数据库集群1、案例目标(1)了解Mycat提供的读写分离功能。(2)了解MySQL数据库的主从架构。(3)构建以Mycat为中间件的读写分离数据库集群。2、案例分析读写分离的基本原理:让主数据库处理事务性增、改、删除操作,而从库处理查询操作2.1准备三台虚拟机设置如下:......
  • QT读写配置ini文件
    一、概述Qt中常见的配置文件为(.ini)文件,其中ini是InitializationFile的缩写,即初始化文件。配置文件的格式如下所示:模板:点击查看代码[节名]key1=value1key2=value2示例:[SysParam]hostIP=192.168.1.100hostPort=5200Qt中使用QSettings类来完成读写ini文件的操作。......
  • Vue中使用xlsx库解析Excel
    <template><div><el-uploadref="upload"class="upload-demo"action="#"accept="xlsx,xls"multiple:limit="1":auto-upload="false":withCredentials="......
  • 提高python读写excel单元格的效率
    目录1、批量写入一列与逐个写入一列的效率对比2、批量读取一行3、批量读取一列4、批量读取二维表格5、批量写入二维表格使用pywin32读写excel,如果逐个单元格访问,会明显感觉到执行效率很低。因为pywin32其实是python重新封装了一下com接口,交互效率本身就低。试了一......
  • Python办公自动化之Excel
    在日常工作中,Excel是很多办公人士必不可少的工具,而随着工作流程的复杂化,手动操作Excel的效率已无法满足高效办公的需求。那么,如何通过Python来实现Excel的自动化操作,帮助我们节省时间,提高效率呢?Python如何高效处理Excel文件?通过Python,我们可以快速地读取、修改和......
  • java 解析excel (网络资源)
    在Java中解析Excel文件,可以使用ApachePOI库。以下是一个简单的例子,展示如何使用ApachePOI读取一个Excel文件(假设为.xlsx格式)的内容。首先,确保你的项目中包含了ApachePOI的依赖。如果你使用Maven,可以添加以下依赖到你的pom.xml文件中:<dependency><groupId>org......
  • SD卡读写
    SD卡SD卡分类根据存储容量根据性能SD卡协议简介SPI模式命令命令格式命令类别CMDACMD响应R1R2R3R7寄存器CSD总线读操作写操作擦除&写保护初始化流程SD模式IP设计IP例化界面IP接口IP状态机IP验证雷龙贴片式TF卡参考资料SD卡分类根据存储容量Standard......
  • Excel转dbc过程中出现的问题记录
    受限于python版本,无法使用canmatrix等库于是采用excel转字符串,输出到.dbc文档的方式实现DBC信息内容参见 DBC系列之DBC格式与属性说明[1]-CSDN博客遇到的问题:1、报文的DLC范围被限制为0~8,超限的报文数据都会报错解决办法:以文本文档方式打开dbc文档,添加关键字段BA_DEF_......