Python xlrd模块

安装xlrd

 

该模块需要自行安装,直接使用pip安装就能安装

简单使用

测试使用的表格
在这里插入图片描述

1、打开表格文件并获取所有sheet名称

>>> rb = xlrd.open_workbook(r'E:\py-test\tests.xls')
>>> rb.sheet_names()
[u'Sheet1', u'Sheet2', u'Sheet3']

2、获取需要打开的sheet

>>> rb.sheet_names()[0]
u'Sheet1'
>>> rb.sheet_by_index(0)
<xlrd.sheet.Sheet object at 0x000000000447D390>
>>> rb.sheet_by_name('Sheet1')
<xlrd.sheet.Sheet object at 0x000000000447D390>
>>> 

3、获取行数、列数及名称

>>> sheet1 = rb.sheet_by_name('Sheet1')
>>> sheet1.nrows
11
>>> sheet1.ncols
5
>>> sheet1.name
u'Sheet1'
>>> 

4、读取一行、列的值

#获取第一行每个单元格对象  返回列表
>>> sheet1.row(0)
[text:u'cz9025', text:u'B1', text:u'C1', xldate:43421.0]
>>> sheet1.row_values(0)
[u'cz9025', u'B1', u'C1', 43421.0]
#获取第一列每个单元格对象  返回列表
>>> sheet1.col(0)
[text:u'cz9025', text:u'A2', text:u'A3', text:u'A4', text:u'A5', text:u'A6', text:u'A7', text:u'A8', text:u'A9', text:u'A10', text:u'A11']
>>> sheet1.col_values(0)
[u'cz9025', u'A2', u'A3', u'A4', u'A5', u'A6', u'A7', u'A8', u'A9', u'A10', u'A11']
>>> 

5、获取指定单元格的值

>>> sheet1.cell(0, 0).value
u'cz9025'
>>> sheet1.cell_value(0, 0)
u'cz9025'
>>> sheet1.row(0)[0]
text:u'cz9025'
>>> sheet1.row(0)[0].value
u'cz9025'
>>> 

6、单元格类型

ctype 类型值说明: 0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error

>>> sheet1.cell(0, 0).ctype
1

7、获取日期类型的格式

获取表格中的日期 ,先判断是否为日期,否的话会报错

>>> if sheet1.cell(0, 3).ctype == 3:
        date_value = xlrd.xldate_as_tuple(sheet1.cell_value(0, 3), rb.datemode)
        print u'日期=>', date(*date_value[:3])
        print u'格式化日期=>:', date(*date_value[:3]).strftime('%Y/%m/%d')
        dates = xlrd.xldate_as_datetime(sheet1.cell_value(0, 3), rb.datemode)
        print dates.date()

        
日期=> 2018-11-17
格式化日期=>: 2018/11/17
2018-11-17
>>> 

8、获取合并单元格的内容

merged_cells返回的这四个参数的含义是:(row,row_range,col,col_range),其中[row,row_range)包括row,不包括row_range,col也是一样,下标从0开始。这里,需要在读取文件的时候添加个参数,将formatting_info参数设置为True,默认是False,否则可能调用merged_cells方法获取到的是空值。

>>> workbook = xlrd.open_workbook(r'E:\Py-Test-Script\py-test\user.xls', formatting_info=True)
>>> sheet2 = workbook.sheet_by_name('Sheet1')
>>> print sheet2.merged_cells
[(1, 3, 3, 5), (4, 7, 3, 4)]
>>> merg = []
>>> for lrow, lrow_range, rcol, rcol_range in sheet2.merged_cells:
        merg.append([lrow, rcol])
        print sheet2.cell_value(lrow, rcol)

        
合并D2-E3
合并D5-D7
>>> 

合并行单元格读取行的第一个索引,合并列单元格读取列的第一个索引

>>> sheet1.cell(1, 3).value
u'\u5408\u5e76D2-E3'
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值