Python xlrd模块常用操作

1. 模块导入

import xlrd

xlrd模块,使用前需要先安装:pip install xlrd

若使用 pip 安装时,提示:无法查找到,则先下载package到本地,放置在python27\Lib\site-packages 路径下

2.  打开excel

filename = r'F:\test\安排时间表.xlsx'

filename=filename.decode('utf-8')# 对参数转码

data = xlrd.open_workbook(filename)#文件名以及路径

# 若路径或文件名中有中文,则添加r

xlrd.open_work(filepath or filename )  返回值: xlrd.book.Book类型

使用filename.decode('utf-8') 对参数转码,解决IOError: [Errno 2] No such file or directory

注:excel表格扩展名不可省略,否则会报错

3. sheet操作

sheet_index=0 # 索引

table1 = data.sheets()[sheet_index] #通过索引顺序获取,返回xlrd.sheet.sheet()对象

table2 = data.sheet_by_index(sheet_index) # 通过索引顺序获取,返回xlrd.sheet.sheet()对象

sheet_name="Sheet1" 

table3 = data.sheet_by_name(sheet_name) # 通过sheet的名称获取,返回xlrd.sheet.sheet()对象

names = data.sheet_names() #返回book中所有工作表的名字,list类型

print "names : ",names

print  data.sheet_loaded(sheet_name) # 检查某个sheet是否导入完毕

print data.sheet_loaded(sheet_index)

注:我个人偏好使用 sheet_name,因个人习惯不常改变name,但会移动排序

4. 行操作

nrows = table1.nrows # 获取该sheet中的有效行数

print "\nThe number of sheet1\'s row is ",nrows

rowx = 520

# print table1.row(rowx) # 返回由该行中所有单元格对象组成的列表

# 处理list中的中文乱码

t = str(table1.row(rowx)).replace('u\'','\'')

print  t.decode('unicode-escape')

rowSlice = table1.row_slice(rowx) # 同row()

# 处理list中的中文乱码

t = str(rowSlice).replace('u\'','\'')

print "\n===rowSlice=== \n", t.decode('unicode-escape')

print  "\n===rowTypes=== \n",table1.row_types(rowx,start_colx=0,end_colx=None)

# rowx行,第start_clox~end_colx列的单元格对象的数据类型组成的列表

# 结果??array('B', [3, 1, 1, 0, 1, 1, 1])

# 1对应str和text,3对应Number,0对应空,即无值

rowValue = table1.row_values(rowx,start_colx=0,end_colx=None)

# rowx行,第start_clox~end_colx列的单元格对象的数值组成的列表

# 处理list中的中文乱码

t = str(rowValue).replace('u\'','\'')

print  "\n===rowValue=== \n", t.decode('unicode-escape')

print "rowLen: ",table1.row_len(rowx) #返回单元格的有效单元格长度,即有效列数

5. 列操作

ncols = table2.ncols # 获取列表的有效列数

print "ncols = ",ncols

colx = 0

colList = table2.col(colx,start_rowx=0,end_rowx=10)

colList = str(colList).replace('u\'','\'')

colList = colList.decode('unicode-escape')

print "col(",colx,",start_rowx=0,end_rowx=10) = ",colList

colType = table2.col_types(colx,start_rowx=0,end_rowx=10)

print "colType = ",colType

colValue = table2.col_values(colx,start_rowx=0,end_rowx=10)

colValue = str(colValue).replace('u\'','\'')

colValue = colValue.decode('unicode-escape')

print "col_values(",colx,",start_rowx=0,end_rowx=10) = ",colValue

# colLen = table2.col_len(colx) #AttributeError: 'Sheet' object has no attribute 'col_len'

6.  单元格操作

cell = table3.cell(rowx,colx) #返回单元格对象

# cell = str(cell).replace('u\'','\'')

# cell = cell.decode('unicode-escape')

# xlrd.xlrdate_as_tuple(cell,date.date) xldate如何正常显示

print "cell(",rowx,",",colx,") = ",cell

print type(cell)

cellType = table3.cell_type(rowx,colx) #返回单元格对应的数据类型

print "cellType = ",cellType

print type(cellType)

cellValue = table3.cell_value(rowx,colx) # 返回单元格对象对应的数据

print "cellValue = ",cellValue

print type(cellValue)

7. 常用单元格中的数据类型

0 empty(空的)、1-String(text)、2-number、3-date、4-boolean、5-error、6-blank(空白表格)

查看数据类型:cell_type()、row_types()、col_types()

你可能感兴趣的:(Python xlrd模块常用操作)