一、openpyxl
- 安装
pip install openpyxl -i https://pypi.tuna.tsinghua.edu.cn/simple - excel组成
Excel文件、表单、单元格
Ⅰ、读取excel数据
1.导入相关库:
from openpyxl import load_workbook
语法:load_workbook(filename, read_only=False, keep_vba=KEEP_VBA,
data_only=False, keep_links=True):
filename:excel文件名称
read_only=False:只读,不可编辑
data_only=False:只读取公式,True:读取计算结果
2、操作步骤
加载excel
wb_obj = load_workbook(filename="case_data.xlsx")
获取表单对象
sheet_obj = wb_obj["login"]
获取单元格
cell_obj = sheet_obj["B3"]
res3 = sheet_obj.cell(2,3)
print(res3.value)
获取单元格内容
value = cell_obj.value
关闭excel
wb_obj.close()
获取表单所有名称
names = wb_obj.sheetnames
通过索引获取表单对象
sheet_obj= wb_obj.worksheets[0]
行操作
#获取组大行
res1 = sheet_obj.max_row
#获取所有行对象
res2 = sheet_obj.rows
for obj in sheet_obj.rows:
for i in obj:
print(i.value)
行切片
- 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 返回对象, True:返回单元格对应的数据
- 切片原则是两头都包含,包含起始索引位置也包含结束索引位置的值
result = sheet_obj.iter_rows(min_row=1, max_row=2, min_col=1, max_col=2, values_only=True)
print(list(result))
列操作
res2 = sheet_obj.max_column #获取最大列
result2 = sheet_obj.iter_cols(min_row=1, max_row=2, min_col=1, max_col=2, values_only=True)
print(list(result2))
Ⅱ、写excel
wb_obj = load_workbook(filename="case_data.xlsx")
sheet_obj = wb_obj["login"]
#写单元格
sheet_obj["B3"]="test"
res3 = sheet_obj.cell(row=2,column=3,value="test_demo")
#保存表格
wb_obj.save("case_data.xlsx")
wb_obj.close()
Ⅲ、数据封装
from openpyxl import load_workbook
class HandleExcel():
def __init__(self,file_name,sheet_name):
self.wb_obj = load_workbook(filename=file_name)
self.sheet_obj = self.wb_obj.sheetnames(sheet_name)
def get_excel_cases(self):
case_list = []
datas = list(self.sheet_obj.iter_cols(values_only=True))
for case in datas[1:]:
resulet = dict(zip(datas[0],case))
case_list.append(resulet)
self.colse_file()
return case_list
def colse_file(self):
self.wb_obj.close()
if __name__ == '__main__':
cl = HandleExcel(file_name="case.xlsx",sheet_name="logoin")
cl.get_excel_cases()