python操作excel主要用到xlrd和xlwt这两个库,即xlrd是读excel,xlwt是写excel的库
利用Xlrd模块进行Excel操作,该方法仅支持Excel 2003,xls格式,否则打开Excel时会报错。
更多的操作见下面的案例:
import xlwt
from xlutils.copy import copy
import xlrd
class OperationExcel:
def __init__(self,file_path=None,sheet_name=None):
if file_path!=None:
self.file_path=file_path
self.sheet_name=sheet_name
else:
self.file_path='../dataconfig/Testcase.xls'
self.sheet_name="Sheet1"
self.workbook =self.get_data()
'''
读取Excel数据,获取指定sheet_name表格的数据
'''
def get_data(self):
workbook =xlrd.open_workbook(self.file_path,formatting_info=True)
#通过sheet_name获取Excel的表
tables = workbook.sheet_by_name(self.sheet_name)
#tables=workbook .sheets()[self.sheet_id]
return tables
#获取行数
def get_lines(self):
return self.workbook.nrows
#获取列数
def get_clos(self):
return self.workbook.ncols
'''
根据(行,列)读取单元格数据
'''
def get_cell_value(self,row,col):
return self.workbook.cell_value(row,col)
#根据列名称获取某一列的内容
def get_cols_data(self,col_id=None):
if col_id!=None:
cols=self.workbook.col_values(col_id)
else:
cols=self.workbook.col_values(0)
return cols
#根据行号,找到改行的内容
def get_row_values(self,row):
tables=self.workbook
row_data=tables.row_values(row)
return row_data
#根据首列对应的值,找到对应的行号
def get_row_num(self,case_id):
num=0
#根据Excel的格式第0列为测试用例编号
cols_data=self.get_cols_data()
for col_data in cols_data:
if case_id in col_data:
return num
num=num+1
#根据首列的值,找到行内容(即单条测试用例的数据)
def get_rows_data(self,row_value):
row_num=self.get_row_num(case_id=row_value)
#通过行号,获取行的值
rows_data=self.get_row_values(row_num)
return rows_data
#根据(行,列)写入数据,测试结果写入
def write_Cell_Value(self,row,col,valus):
read_Data=xlrd.open_workbook(self.file_path,formatting_info=True)
write_Data=copy(read_Data)
sheet_data=write_Data.get_sheet(0)
#写入样式格式
style = xlwt.easyxf(
"font: name Arial;"
"pattern: pattern solid, fore_colour red;"
)
if valus=="FAILED":
sheet_data.write(row,col,valus,style)
else:
sheet_data.write(row,col,valus)
write_Data.save(self.file_path)
if __name__=="__main__":
ex=OperationExcel(sheet_name="sheet1")
print(ex.get_row_values(1))
print(ex.get_cols_data(1))
print(ex.get_rows_data("case_02"))
print(ex.get_cell_value(2,3))
print(ex.get_row_num("case_01"))
print(ex.get_lines())
print(ex.get_clos())
ex.write_Cell_Value(2,5,"FAILED")
ex=OperationExcel(sheet_name="sheet1")
print(ex.get_cell_value(2, 5))
-------------------------------------最后---------------------------------
更多软件测试相关内容请关注“软件测试道与术”公众号或扫描下方二维码