从excel中读取数据的python代码
#coding:utf-8 import os import xlrd from common.path import dataPath from common.setlog import log class ReadExcel(object): def __init__(self,fileName,sheetName): try: self.dataFile = os.path.join(dataPath, fileName) self.workBook = xlrd.open_workbook(self.dataFile) self.sheetName = self.workBook.sheet_by_name(sheetName) self.log=log() except Exception: self.log.exception('文件读取失败,请检查文件或是表名是否存在') raise else: self.log.info('文件读取成功')# 读excel中某个单元格的数据
def readExcel(self,rownum,colnum):
try:
value = self.sheetName.cell(rownum,colnum).value
except Exception:
self.log.exception('读取数据数据失败,请查看定位文本框是否存在有效的值')
raise
return value#读excel中某个表的某一行数据,以列表返回,元素之间用逗号隔开的
def readnrows(self,row):
try:
row_value=self.sheetName.row_values(row)
except Exception:
self.log.exception('该表有效的数据行为%s行,而输入的行数为%s,请检查!'%(row,self.sheetName.nrows))
raise
return row_value#读excel中某个表的某一列数据,以列表返回,元素之间用逗号隔开的
def readncols(self,col):
try:
col_value=self.sheetName.col_values(col)
except Exception:
self.log.exception('该表有效的数据列为%s列,而输入的列数为%s,请检查!'%(col,self.sheetName.ncols))
raise
return col_value# 读excel中某个表的所有数据,以列表返回,列表的每个元素也为一个列表,里面为每行的值,元素之间用逗号隔开的
def readsheet(self):
# 创建一个空的List,单独读取每一行或是每一列都是一个列表,那么读取全部那就是将每一行每一列存入一个列表中
row_list=[]
# 获取一个sheet的值
'''
1、sheet.nrows: 工作表中有值总行数
2、sheet.ncols:工作表中有值总列数
3、sheet.row_values(rowx, start_colx=0, end_colx=None):返回给定行中单元格值的一部分(开始行,开始列默认是0,结束列)
'''
try:
for i in range(1, self.sheetName.nrows):
row_value=self.sheetName.row_values(i, 0, self.sheetName.ncols-1)
row_list.append(row_value)
return row_list
except Exception:
self.log.exception('读取表数据失败,请检查表是否存在')if name == 'main':
cellValue = ReadExcel('Data.xls','logindata')
value=cellValue.readnrows(2) #注意这里是从0开始的
print(value)
关注的点:
1、table.nrows: 工作表中有值总行数
2、table.ncols:工作表中有值总列数
3、读取某个单元值:value = self.sheetName.cell(rownum,colnum).value
4、读取指定行(返回的是一个列表):row_value=self.sheetName.row_values(row)
5、读取指定列(返回的是一个列表):col_value=self.sheetName.col_values(col)
6、读取整个表的值(返回的是一个列表,只不过元素也是列表):
for i in range(1, self.sheetName.nrows): row_value=self.sheetName.row_values(i, 0, self.sheetName.ncols-1) row_list.append(row_value)
return row_list