上一篇说到用python的Xlwt库只能写 Excel 2003 的Xls格式的文档,那么Excel 2010 的Xlsx 格式的文档要怎么读写呢?答案就是Openpyxl库。
具体的操作案例如下:
import openpyxl
class OperationXlsx:
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.xlsx'
self.sheet_name="Sheet1"
self.workbook = openpyxl.load_workbook(self.file_path, data_only=False)
self.worksheet =self.get_data(sheet_name)
def get_data(self,sheet_name):
#通过sheet_name获取Excel的表
worksheet = self.workbook[self.sheet_name]
return worksheet
#获取行数
def get_lines(self):
return self.worksheet.max_row
#获取列数
def get_clos(self):
return self.worksheet.max_column
def get_cell_value(self,row,col):
#row,col从1开始计算
return self.worksheet.cell(row,col).value
def get_row_values(self):
str=[]
num=self.get_lines()-1
i=1
while i<=num:
str.append(self.get_row_valuesById(i))
i+=1
return str
#根据列号获取某一列的内容
def get_col_valuesById(self,col_id=None):
str = []
for cell in list(self.worksheet.columns)[col_id]: # 获取第四行的数据
str.append(cell.value)
return str
#根据行号,找到改行的内容
def get_row_valuesById(self,row):
str=[]
for cell in list(self.worksheet.rows)[row]: # 获取第四行的数据
str.append(cell.value)
return str
#根据首列对应的值,找到对应的行号
def get_row_num(self,case_id):
num=0
#根据Excel的格式第0列为测试用例编号
cols_data=self.get_col_valuesById(0)
for col_data in cols_data:
if case_id in col_data:
return num
num=num+1
#根据首列的值,找到行内容(即单条测试用例的数据)
def get_row_valueByString(self,row_value):
row_num=self.get_row_num(case_id=row_value)
#通过行号,获取行的值
rows_data=self.get_row_valuesById(row_num)
return rows_data
#根据(行,列)写入数据,测试结果写入,行列是从1开始的
def write_Cell_Value(self,row,col,valus):
self.worksheet.cell(row,col,valus)
# self.worksheet["B1"]="test" sheet值赋值
self.workbook.save(self.file_path)
if __name__=="__main__":
ex=OperationXlsx(sheet_name="sheet1")
ex.get_row_values()
print(ex.get_lines())
print(ex.get_clos())
print(ex.get_row_valuesById(2))
print(ex.get_col_valuesById(1))
print(ex.get_row_valueByString("case_02"))
print(ex.get_cell_value(2,3))
print(ex.get_row_num("case_01"))
ex.write_Cell_Value(2,6,"PASS")
#写入后,这里需要再次读取,缓存数据才能更新
ex=OperationXlsx(sheet_name="sheet1")
print(ex.get_cell_value(2, 6))
相关文章推荐:《Python---读取Excel的方法(方法一)》
-------------------------------------最后---------------------------------
更多软件测试相关内容请关注“软件测试道与术”公众号或扫描下方二维码