首页 > 技术文章 > Excel操作之读取数据----基于xlrd模块

Treelight 2020-02-06 20:48 原文

使用流程

Excel数据读取操作是基于工作表对象进行的,所以需要首先获取工作表对象,而工作表对象要通过工作簿对象获取的。

工作簿对象操作

以下操作以以下表为例子:

# 打开文件并返回一个工作簿对象
workbook_obj = xlrd.open_workbook('c:\player.xlsx')
# 获取工作表名称列表
print(workbook_obj.sheet_names())
# 获取工作表对象的三个函数,sheet_by_index的参数是索引值,sheet_by_name的参数是工作表名,sheet_loaded两者皆可
print(workbook_obj.sheet_by_index(0))
print(workbook_obj.sheet_by_name('Sheet2'))
workbook_obj.sheet_loaded(0)
workbook_obj.sheet_loaded('Sheet2')
# 返回工作簿的所有工作表对象,是一个列表
workbook_obj.sheets()

行操作

# 获取行数
print(sheet1_obj.nrows)
# 获取第二行的数据,原型:SheetObject.row_values(rowx[,start_colx=0,end_colx=None])
print(sheet1_obj.row_values(1))  # ['Beckham', 7.0, '曼联', '中场']
# 获取第二行单元,返回值为[text:'Beckham', number:7.0, text:'曼联', text:'中场']
print(sheet1_obj.row(1))
# 返回值的类型,empty为0,string为1,number为2,data为3,boolean为4,error为5
print(sheet1_obj.row_types(1))  # array('B', [1, 2, 1, 1])
# 获取长度
print(sheet1_obj.row_len(1))  # 4
# sheet1_obj.get_rows()产生一个生成器
for v in sheet1_obj.get_rows():
    print(v)
# 对行进行切片
print(sheet1_obj.row_slice(1, 0, 1))

列的操作和行的操作差不多,把row改为col即可

单元格操作

print(sheet1_obj.cell(2, 1))  # number:11.0
# 获取值
print(sheet1_obj.cell_value(1, 1))
# 获取类型
print(sheet1_obj.cell_type(2, 1))

推荐阅读