翼度科技»论坛 编程开发 python 查看内容

Excel读写之xlrd模块

8

主题

8

帖子

24

积分

新手上路

Rank: 1

积分
24
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、打开文件
  1. import xlrd
  2. workbook = xlrd.open_workbook('test.xls')
  3. print(workbook)  # <xlrd.book.Book object at 0x7f592100ff50>
复制代码
1.2.1.2、获取所有的表名
  1. import xlrd
  2. workbook = xlrd.open_workbook(r'./code/excelRead/test.xls')
  3. # 获取所有的工作表名
  4. sheet_names = workbook.sheet_names()
  5. print(sheet_names)  # ['sdxl', 'hzgg', 'sdyxz', 'TB2018']
  6. # 获取所有的sheet对象
  7. Sheets = workbook.sheets()
  8. print(Sheets)  # [Sheet  0:<sdxl>, Sheet  1:<hzgg>, Sheet  2:<sdyxz>, Sheet  3:<TB2018>]
复制代码
1.2.1.3、获取指定的Sheet
  1. import xlrd
  2. workbook = xlrd.open_workbook(r'./code/excelRead/test.xls')
  3. # 方式一:通过索引选取
  4. sheet1 = workbook.sheets()[0]
  5. print(sheet1 )  # Sheet  0:<sdxl>
  6. # 方式二:通过索引选取
  7. sheet2 = workbook.sheet_by_index(2)
  8. print(sheet2)  # Sheet  2:<sdyxz>
  9. # 方式三:通过表名选取,返回一个<class 'xlrd.sheet.Sheet'>对象
  10. sheet = workbook.sheet_by_name("hzgg")
  11. print(sheet)  # Sheet  1:<hzgg>
复制代码
1.2.1.4、某个sheet是否导入完毕
  1. # 通过索引,检查某个sheet是否导入完毕
  2. print(workbook.sheet_loaded(0))  # True
  3. # 通过文件名,检查某个sheet是否导入完毕
  4. print(workbook.sheet_loaded("hzgg"))  # True
复制代码
1.2.2、sheet对象的基本操作

1.2.2.1、sheet表行操作

1.2.2.1.1、获取表中所有的行数
  1. import xlrd
  2. workbook = xlrd.open_workbook(r'./code/excelRead/test.xls')
  3. sheet2 = workbook.sheet_by_name("hzgg")
  4. # 特别注意,这是属性而不是方法,不加括号
  5. 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、获取有效列数
  1. import xlrd
  2. workbook = xlrd.open_workbook(r'./code/excelRead/test.xls')
  3. sheet2 = workbook.sheet_by_name("hzgg")
  4. # 获取有效列数
  5. 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

 

来源:https://www.cnblogs.com/crazywh/p/18436371
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具