本篇是使用xlrd实现的对excel的数据进行读取,xlrd网上demo很多,不做过多叙述,下面主要讲解封装的思路:
首先贴出测试用的excel表格
#coding=utf-8
import xlrd
#获取excel文件
data = xlrd.open_workbook('file_path/xxx.xls')
#获取第一张表数据
tables = data.sheets()[0]
#打印表行数
print(tables.nrows)
#打印第4行,第3列单元格数据
print(tables.cell_value(3,2))
此方法需要实现的作用是:其他方法再调用此方法时,如果传入file_name和sheet_id,就调用对应路径的excel文件和对应的表。如果不传这两个字段,就调用默认表格。
def __init__(self,file_name=None,sheet_id=None):
if file_name:
self.file_name = file_name
self.sheet_id = sheet_id
else:
self.file_name = 'file_path/xxx.xls'
self.sheet_id = 0
self.data = self.get_data()
封装获取tables的方法,用以之后获取单元格行数、单元格数据,或其他表信息使用。
def get_data(self):
data = xlrd.open_workbook(self.file_name)
tables = data.sheets()[self.sheet_id]
return tables
def get_lines(self):
tables = self.data
return tables.nrows
def get_value(self,row,col):
return self.data.cell_value(row,col)
到这里,就封装完成了,然后可以调用试一下:
if __name__ == '__main__':
opers = OpeExcel()
print(opers.get_lines())
print(opers.get_value(3,2))
现在只要生成对应的OpeExcel()对象,然后调用相应的get_lines()、get_value()方法,就可以获取到相应的数据了。
打印结果
完整代码如下:
#coding: utf-8
import xlrd
class OpeExcel:
def __init__(self,file_name=None,sheet_id=None):
if file_name:
self.file_name = file_name
self.sheet_id = sheet_id
else:
self.file_name = 'file_path/xxx.xls'
self.sheet_id = 0
self.data = self.get_data()
#获取sheets的内容
def get_data(self):
data = xlrd.open_workbook(self.file_name)
tables = data.sheets()[self.sheet_id]
return tables
#获取单元格行数
def get_lines(self):
tables = self.data
return tables.nrows
#获取单元格数据
def get_value(self,row,col):
return self.data.cell_value(row,col)
if __name__ == '__main__':
opers = OpeExcel()
print(opers.get_lines())
print(opers.get_value(3,2))
有疑问的小伙伴可以在下方留言,我会针对问题不断优化文章内容,希望能有效的帮到更多人,谢谢~