#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