Python使用openpyxl操作excel表格

前言

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。

PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取

http://note.youdao.com/noteshare?id=3054cce4add8a909e784ad934f956cef

一、openpyxl的使用

pip install openpyxl

第一步:打开工作簿(读取Excel文件中所有的数据保存为工作簿对象)

workbook = openpyxl.load_workbook('cases.xlsx')

第二步:选中表单对象

sheet = workbook['login']

第三步:通过表单选中表格读取数据

①读取内容(第五行第四列)

1 data = sheet.cell(row=5,column=4)
2 printa(data.value) # 获取内容用value方法

②写入内容(保存才会生效)

1 sheet.cell(row=7,column=3,value='("Python","123456")')
2 # 写入内容后,一定要保存才会生效
3 workbook.save('cases.xlsx')

③获取最大行和最大列

# 最大行
sheet.max_row
# 最大列
sheet.max_column

④按行获取所有的格子对象,每一行格子放入一个元组中

sheet.rows

注意点:不要随便在表格中敲空格

二、openpyxl的封装

导包

import openpyxl

 

封装

 1 class ReadExcel(object):
 2     """操作Excl文件"""
 3 
 4     def __init__(self, fileName, sheetName):
 5         """
 6         初始化方法
 7         :param fileName: Excel文件名
 8         :param sheetName: 表单名
 9         """
10         self.fileName = fileName
11         self.sheetName = sheetName
12 
13     def open(self):
14         """打开工作簿,选中表单"""
15         self.wb = openpyxl.load_workbook(self.fileName)
16         self.sh = self.wb[self.sheetName]
17 
18     def save(self):
19         """保存工作簿对象的方法"""
20         self.wb.save(self.fileName)
21         self.wb.close()  # 这一行加不加关系不大,加了可以释放内存

 

1、读取数据

①将每条数据存储成字典类型

 1     def read_data_dict(self):
 2         """读取数据(将每条数据存储成字典类型)"""
 3         # 打开工作簿
 4         self.open()
 5         # 通过rows获取Excel文件中所有的行数据,然后把数据转成列表
 6         rows = list(self.sh.rows)
 7         # 表头
 8         title = []
 9         # 遍历Excel文件中的第一行表头信息
10         for i in rows[0]:
11             title.append(i.value)
12         # 用例数据列表
13         cases = []
14         # 遍历用例数据行
15         for row in rows[1:]:
16             # 定义一个列表存放每一行的数据
17             data = []
18             # 遍历每一行的数据
19             for r in row:
20                 data.append(r.value)
21             # 把每一行的数据通过zip进行打包,然后转成字典,存入到用例数据列表中
22             case = dict(zip(title, data))
23             cases.append(case)
24         return cases

 

②将每条数据存储成CaseData类对象类型

 1 class CaseData(object):
 2     """保存用例数据类"""
 3     pass
 4     def read_data_obj(self):
 5         """读取数据(将数据保存到CaseData类中)"""
 6         self.open()
 7         rows = list(self.sh.rows)
 8         # 表头
 9         title = []
10         # 遍历Excel文件中的第一行表头信息
11         for i in rows[0]:
12             title.append(i.value)
13         # 定义用例列表,用来存放用例类列表
14         cases = []
15         # 遍历用例数据行
16         for row in rows[1:]:
17             # 定义一个列表存放每一行的数据
18             data = []
19             # 遍历每一行的数据
20             for r in row:
21                 data.append(r.value)
22             # 把每一行的数据通过zip进行打包,然后转成字典,存入到用例数据列表中
23             case = dict(zip(title, data))
24             # 定义一个用例存放类对象
25             case_obj = CaseData()
26             for k, v in case.items():
27                 # 通过setattr()给对象添加属性
28                 setattr(case_obj, k, v)
29             # 把对象添加到列表中
30             cases.append(case_obj)
31         return cases

 

2、写入数据

 1     def write_data(self, row, column, value):
 2         """
 3         写入数据
 4         :param row: 行
 5         :param column: 列
 6         :param value: 数据
 7         """
 8         self.open()
 9         # 指定行列进行写入数据
10         self.sh.cell(row=row, column=column, value=value)
11         # 保存
12         self.wb.save(self.fileName)
13         # 关闭
14         self.wb.close()
posted @ 2019-12-20 14:21  有趣的Python  阅读(2033)  评论(0编辑  收藏  举报