一、 openpyxl的作用:
1、、openpyxl操作Excel
2、数据驱动(接口请求参数的数据都放在Excel)
二、安装openpyxl
pip install openpyxl -i https://pypi.tuna.tsinghua.edu.cn/simple
国内镜像源:python国内镜像源 - 叫我大表哥 - 博客园
三、excel组成
Excel文件、表单、单元格
四、读取Excel数据
步骤:
1、加载Excel文件
从openpyxl库中导入load_workbook方法
from openpyxl import load_workbook
加载Excel文件,将数据文件data.xlsx放在当前包下面
wb_obj = load_workbook(filename='data.xlsx')
2、获取表单对象
sheet_obj = wb_obj["Sheet1"]
3、获取单元格对象
cell_obj = sheet_obj["A1"]
4、获取单元格对象对应的值
value = cell_obj.value
print(value)
5、关闭文件
wb_obj.close()
五、行操作与列操作
用到的方法:
#行操作
iter_rows(self, min_row=None, max_row=None, min_col=None, max_col=None, values_only=False)
#列操作
iter_cols(self, min_col=None, max_col=None, min_row=None, max_row=None, values_only=False)
参数说明:
min_row=None, 起始行索引值(索引从1开始,int类型,默认1)
max_row=None, 结束行索引值(索引从1开始,int类型,默认最大行的值)
min_col=None, 起始列索引值(索引从1开始,int类型,默认1)
max_col=None, 结束列索引值(索引从1开始,int类型,默认最大列的值)
values_only=False ,默认是False,返回对象, True:返回单元格对应的数据
# 行操作
wb_obj = load_workbook('data.xlsx')
sheet_obj = wb_obj.worksheets[0]
# 以行切片输出
res1 = sheet_obj.iter_rows(min_row=1, max_row=3, min_col=1, max_col=4, values_only=True)
print(res1)
#res1为一个生成器,需要转换为list使用
print(list(res1))
# 列操作
# 以列切片输出
res2 = sheet_obj.iter_cols(min_col=1, max_col=4, min_row=1, max_row=3, values_only=True)
print(list(res2))
获取表单的最大行与最大列
wb_obj = load_workbook('data.xlsx')
sheet_obj = wb_obj.worksheets[0]
# sheet_obj = wb_obj['Sheet1']
# 获取最大行
m_row = sheet_obj.max_row
# 获取最大列
m_col = sheet_obj.max_column
print(m_row)
print(m_col)
六、封装
from openpyxl import load_workbook
class HandleCases:
def __init__(self, file_name, sheet_name):
self.wb_obj = load_workbook(filename=file_name)
self.sheet_obj = self.wb_obj[sheet_name]
def get_excel_cases(self):
cases_list = []
# 将表单数据以行的形式取出来放在cases这个列表里
cases = list(self.sheet_obj.iter_rows(min_row=1, max_row=3, min_col=1, max_col=3, values_only=True))
# 把表头取出来
cases_title = cases[0]
# 把数据取出来
cases_text = cases[1:]
for case in cases_text:
result = dict(zip(cases_title, case))
cases_list.append(result)
self.file_close()
print(cases_list)
return cases_list
def file_close(self):
self.wb_obj.close()
if __name__ == '__main__':
cl = HandleCases(file_name='data02.xlsx', sheet_name='Sheet1')
cl.get_excel_cases()
输出结果:
[{'title1': 1, 'title2': 2, 'title3': 3}, {'title1': 4, 'title2': 5, 'title3': 6}]