一、安装 Openpyxl 模块
File > Settings > Project Interpreter
二、桌面生成 Excel 文件,写入一些数据并复制到PyCharm中
注:【openpyxl 只支持 .xlsx 格式的 Excel 文件】
三、pycharm 中使用 openpyxl 读取文件数据
# -*- -*- -*- -*- -*- -*- -*- -*-
# -*- coding: utf-8 -*-
# @Time : 2020/08/02
# @File : openpyxl_study.py
# -*- -*- -*- -*- -*- -*- -*- -*-
# 导入 openpyxl 模块
import openpyxl
# 1、将指定 excel 文件加载到一个工作簿对象中
wb = openpyxl.load_workbook("jzq.xlsx")
# 2、选择文件中的表单【sheet表名】
sheet = wb['login']
# 3、根据行号和列号读取数据【第一行第一列的数据】
res = sheet.cell(row=1,column=1)
# 4、打印取到的数据值
print(res.value)
四、pycharm 中使用 openpyxl 操作 Excel 写入数据
# 导入 openpyxl 模块
import openpyxl
# 1、将指定 excel 文件加载到一个工作簿对象中
wb = openpyxl.load_workbook("jzq.xlsx")
# 2、选择文件中的表单【sheet表名】
sheet = wb['login']
# 3、根据行号、列号输入value值
sheet.cell(row=1,column=1,value="张三")
# 4、保存为文件
wb.save("jzq.xlsx")
执行后的结果:
如果出现以下报错信息 ,请注意 :
【在写入数据时,文件不可处于打开状态 !!!】
五、读取文件所有单元格的数据内容
# 导入 openpyxl 模块
import openpyxl
'''读取文件所有单元格的数据'''
# 1、将指定 excel 文件加载到一个工作簿对象中
wb = openpyxl.load_workbook("jzq.xlsx")
# 2、选择文件中的表单【sheet表名】
sheet = wb['login']
# 3、使用 .rows 方法把所有的表单对象存储在列表中
# type为列表嵌套元组再嵌套单元格
res = list(sheet.rows)
# 遍历每一行的内容
for cases in res :
# 遍历每一行的所有单元格
for cells in cases :
# 获取每个单元格的 value 值
print(cells.value,end=" ")
print()
六、 Openpyxl 读取、组装用例数据
# 导入 openpyxl 模块
import openpyxl
'''用例数据读取组装成列表嵌套字典的格式'''
# 1、将指定 excel 文件加载到一个工作簿对象中
wb = openpyxl.load_workbook("jzq_openpyxl.xlsx")
# 2、选择文件中的表单【sheet表名】
sheet = wb['login']
res = list(sheet.rows)
'''获取第一行的单元格'''
title = []
# 遍历第一行单元格所有数据并添加到列表中
for tag in res[0]:
title.append(tag.value)
case_data = []
'''遍历除了第一行以外的所有行'''
for row in res[1:]:
data = []
# 遍历每一行的所有单元格子
for c in row:
# 将每个单元格的 value 值添加列表 res_text 中
data.append(c.value)
# 使用zip将title和excepted打包成dict属性
case = dict(zip(title,data))
case_data.append(case )
print(case_data)
七、提供一个封装好的openpyxl类方法,直接调用即可在 excel 表中 读取 / 写入数据
# -*- -*- -*- -*- -*- -*- -*- -*-
# -*- coding: utf-8 -*-
# @Time : 2020/08/02
# @File : Excel_R&W_demo.py
# -*- -*- -*- -*- -*- -*- -*- -*-
import openpyxl
class Excel:
def __init__(self,workbook_name,sheet_name):
self.workbook_name = workbook_name
self.sheet_name = sheet_name
def read_excel(self):
# 1、将指定 excel 文件加载到一个工作簿对象中
wb = openpyxl.load_workbook(self.workbook_name)
# 2、选择文件中的表单【sheet表名】
sheet = wb[self.sheet_name]
res = list(sheet.rows)
'''获取第一行的单元格'''
title = []
# 遍历第一行单元格所有数据并添加到列表中
for tag in res[0]:
title.append(tag.value)
case_data = []
'''遍历除了第一行以外的所有行'''
for row in res[1:]:
data = []
# 遍历每一行的所有单元格子
for c in row:
# 将每个单元格的 value 值添加列表 res_text 中
data.append(c.value)
# 使用zip将title和excepted打包成dict属性
case = dict(zip(title, data))
case_data.append(case)
return case_data
def write_excel(self,row,column,value):
# 1、将指定 excel 文件加载到一个工作簿对象中
wb = openpyxl.load_workbook(self.workbook_name)
# 2、选择文件中的表单【sheet表名】
sheet = wb[self.sheet_name]
# 3、根据行号、列号输入value值
sheet.cell(row=1,column=1,value="张三")
# 4、保存为文件
wb.save(self.workbook_name)
if __name__ == '__main__':
excel = Excel("jzq_openpyxl.xlsx","login")
res = excel.read_excel()
print(res)