导入load_workbook库
from openpyxl import load_workbook
第一步:打开excel
workbook1=load_workbook('test_case.xlsx')
第二步:定位表单(test_data)
sheet=workbook1['test_data']
第三步:操作excel的test_data表单
1、定位单元格(cell),根据行列读取测试数据
data=sheet.cell(3,2).value
print(data)
特殊说明:
定位C2单元格数据{'mobilephone':'13502288210','pwd':'123456'}
data=sheet.cell(2,3).value
查看C2单元格数据类型为,但实际为dict类型
print(type(data)) 输出str
将str类型转化为他原来的类型dict:eval(data)
print(type(eval(data))) 输出dict
综上可得:
- excel 存储的数据,数字还是数字:int—>int、 float—>float 、其他类型—>str
- 使用eval(数据) 将str类型转换为他原来的类型
2、定位单元格(cell),根据行列值,更改原有的数据、写入新的测试数据,
sheet.cell(3,2).value='妮妮' #更改已经存在的测试数据
sheet.cell(6,3).value='小小' #在空的单元格写入新的测试值
workbook1.save('test_case.xlsx') #保存修改
3、统计行和列(参考上图)
max_row=sheet.max_row
max_cow = sheet.max_column
print('最大的行值:',max_row) #输出6
print('最大的列值:',max_cow) #输出7
import openpyxl.styles
# 新建sheet表
wb.create_sheet(index=2, title="sheet3") # 可通过index控制创建的表的位置
#ws1 = wb.create_sheet() #默认插在最后
#ws2 = wb.create_sheet(0) #插在开头 ,
# 根据表名删除sheet表
wb.remove(wb[sheet_names[2]]) # 删除上一步建的第3个工作表
A1_row = sheet1['A1'].row # 获取单元格A1行号 结果: 1
# 获取C列的所有数据
list_sheet1_column_C = []
for i in sheet1["C"]:
list_sheet1_column_C.append(i.value)
# 获取第1行的所有数据
list_sheet1_row_1 = []
for i in sheet1[1]:
list_sheet1_row_1.append(i.value)
# 读取所有数据
list_sheet1_all = []
for row in sheet1.rows:
for cell in row:
list_sheet1_all.append(cell.value) # 按行循环获取所有的值,保存在 list_sheet1_all 列表中
# 表格样式调整
# ------------------ 表格样式调整 ------------------
# 表格样式支持:字体、颜色、模式、边框、数字格式等
# A1单元格 等线24号加粗斜体,字体颜色浅蓝色
sheet1["B11"].font = openpyxl.styles.Font(name="宋体", size=24, italic=True, color="00CCFF", bold=True)
# B1单元格 水平上下居中
sheet1["B11"].alignment = openpyxl.styles.Alignment(horizontal="center", vertical="center")
# 第一行高度设置为30
sheet1.row_dimensions[1].height = 30
# C列的宽度设置为35
sheet1.column_dimensions["C"].width = 35
# 对行进行遍历,输出A1,B1,C1
for row in sheet.rows:
for cell in row:
print(cell.value)
# 对列进行遍历,输出A1,A2,A3
for column in sheet.columns:
for cell in column:
print(cell.value)
# 对某一特定的行进行遍历
for cell in list(sheet.rows)[0]:
print(cell.value)
# 对某一单元格范围进行遍历
for spaces in sheet['A1':'B2']:
for cell in spaces:
print(cell.value)
# 写入一行
row = [1 ,2, 3, 4, 5]
sheet.append(row)
# 写入多行
rows = [
['ID', 'Name', 'Department'],
['001', 'Lee','CS'],
['002', 'John','MA'],
['003', 'Amy','IS']
]
sheet.append(rows)
从excel中读取测试用例:
read_case
--------------------------------------------------------------------------- 分隔符 --------------------------------------------------------------------
#python 写入excel
from openpyxl import Workbook
wb = Workbook()
sheet = wb.active
sheet.title = 'New sheet'#定义sheet的标题,下面的sheet名字
sheet['C3'] = 'hello'#C列,第三行,写入hello
for i in range(10):
sheet['A%d' %(i+1)].value = i+1#循环遍历0到9,然后i+1 就是1到10,这句话表示A1-A10,写入1-10
sheet['E1'].value = '=SUM(A:A)'#在E1写入A列所有数据的和
wb.save('保存一个新的excel.xlsx')#保存到一个新的excel