从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

 

posted @ 2020-12-23 23:44  sriver_dl  Views(224)  Comments(0Edit  收藏  举报