Python 操作Excel
1.安装 openpyxl pip install openpyxl
2.导出模块
3.打开Excel文件
4.选择sheet工作表
5.操作单元格
1.创建表格对象
导入模块 from openpyxl import load_workbook load_workbook( filename, read_only=False, data_only =False:单元格的计算公式,False默认显示公 式,不进行计算,True根据公式进行计算 )
2.获取表单对象(选取工作表)
#通过工作表名获取 sheet_obj=wb_obj['register'] #通过工作表索引获取,索引从0开始 sheet_obj=wb_obj.worksheets[0]
3.获取单元格对象
cell=sheet_obj['B3'] #获取单元格的值 print(cell.value) cell=sheet_obj.cell(3,2) #获取单元格的值 print(cell.value)
4.获取单元格内容
print(cell.value)
5.关闭文件流
wb_obj.close
6.操作行对象
#获取所有的行
row=sheet_obj.rows
#获取所有的列
cols=sheet_obj.columns
#循环读取列
for col in cols:
for cell in col:
print(f'开始:row={cell},cell-->{cell.value}')
#循环读取行
for val in row:
print(val)
#循环读取单元格
for i in val:
print(i,'-->',i.value)
#获取最大的行
max_row=sheet_obj.max_row
print(max_row)
#获取最大的列
max_col=sheet_obj.max_column
print(max_col)
#获取指定的行,切片
data_list=sheet_obj.iter_rows(min_row=1,max_row=4,min_col=2,max_col=3,values_only=True)
#索引从1开始,
#value_only 默认是False,表示获取的是对象。True表示获取的是对应的值
print(data_list)
for val in data_list:
#结果为一个元组
print('val=',val)
Excel写操作
#根据单元格名称来写 sheet_obj["A1"]='id'指定行和列写表
sheet_obj.cell(row=1,column=2).value='name'
sheet_obj.cell(row=1,column=3,value='age')
#append写数据,在表已存在的数据下一行追加写入
data_list=['test1','test2','test3','test4']
sheet_obj.append(data_list)
#appen写多条数据
data_list=[('test1','test2','test3'),('test4','test5')]
for val in data_list:
sheet_obj.append(val)
# sheet_obj.append(data_list)
wb_obj.save('test.xlsx')
wb_obj.close()
‘’’
excel数据封装1.从excel获取到的数据要先存起来。否则只能用一次
2.实现实例
1.获取所有的excel数据
2.将表头与表头分开存储
3.通过zip函数将表头和表体拼接成[key:val]的形式
4.用dict方法装换成字段
5.将所有的用例数据添加到list容器中
‘’’
from openpyxl import load_workbook
from pprint import pprint
class Handle_excel():
def __init__(self,filename,sheetname):
self.filename=filename
self.sheetname=sheetname
# 创建表格对象
# load_workbook(文件名称,是否只读(默认FALSE),是否按照单元格的计算公式读取数据(默认为FALSE))
self.wb_obj=load_workbook(filename=self.filename,read_only=False,data_only=False)
# 创建工作表对象,通过工作表的名称获取
self.sheet_obj = self.wb_obj[self.sheetname]
#读取单元格中的数据保存到list中
#iter_rows(values_only=True)表示获取的是单元格的值,FALSE表示获取的是对象
#
self.datalist=self.sheet_obj.iter_rows(values_only=True)
# print(type(self.datalist))
#将读取的单元格数据组成字典
def get_excel_data(self):
#创建一个空列表保存zip之后的字典数据
test_case_list=[]
#获取字典的key(表头)
data_list=list(self.datalist)
# print(type(data_list))
excel_title=data_list[0]
#表格数据
excel_data=data_list[1:]
#将数据压缩到字典中,并将压缩后的数据添加到test_case_list中
for data in excel_data:
test_dict=dict(zip(excel_title,data))
test_case_list.append(test_dict)
return test_case_list
if __name__ == '__main__':
cl=Handle_excel('../testdata/test_case.xlsx', 'login')
pprint(cl.get_excel_data())



