安装xlrd
该模块需要自行安装,直接使用pip安装就能安装
测试使用的表格
>>> rb = xlrd.open_workbook(r'E:\py-test\tests.xls')
>>> rb.sheet_names()
[u'Sheet1', u'Sheet2', u'Sheet3']
>>> 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>
>>>
>>> sheet1 = rb.sheet_by_name('Sheet1')
>>> sheet1.nrows
11
>>> sheet1.ncols
5
>>> sheet1.name
u'Sheet1'
>>>
#获取第一行每个单元格对象 返回列表
>>> 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']
>>>
>>> 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'
>>>
ctype 类型值说明: 0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error
>>> sheet1.cell(0, 0).ctype
1
获取表格中的日期 ,先判断是否为日期,否的话会报错
>>> 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
>>>
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'