Python使用openpyxl操作excel表格
程序员文章站
2023-08-18 17:34:44
一、openpyxl的使用 第一步:打开工作簿(读取Excel文件中所有的数据保存为工作簿对象) 第二步:选中表单对象 第三步:通过表单选中表格读取数据 ①读取内容(第五行第四列) ②写入内容(保存才会生效) ③获取最大行和最大列 ④按行获取所有的格子对象,每一行格子放入一个元组中 注意点:不要随便 ......
一、openpyxl的使用
pip install openpyxl
第一步:打开工作簿(读取excel文件中所有的数据保存为工作簿对象)
workbook = openpyxl.load_workbook('cases.xlsx')
第二步:选中表单对象
sheet = workbook['login']
第三步:通过表单选中表格读取数据
①读取内容(第五行第四列)
data = sheet.cell(row=5,column=4) printa(data.value) # 获取内容用value方法
②写入内容(保存才会生效)
sheet.cell(row=7,column=3,value='("python","123456")') # 写入内容后,一定要保存才会生效 workbook.save('cases.xlsx')
③获取最大行和最大列
# 最大行 sheet.max_row # 最大列 sheet.max_column
④按行获取所有的格子对象,每一行格子放入一个元组中
sheet.rows
*注意点:不要随便在表格中敲空格
二、openpyxl的封装
导包
import openpyxl
封装
class readexcel(object): """操作excl文件""" def __init__(self, filename, sheetname): """ 初始化方法 :param filename: excel文件名 :param sheetname: 表单名 """ self.filename = filename self.sheetname = sheetname def open(self): """打开工作簿,选中表单""" self.wb = openpyxl.load_workbook(self.filename) self.sh = self.wb[self.sheetname] def save(self): """保存工作簿对象的方法""" self.wb.save(self.filename) self.wb.close() # 这一行加不加关系不大,加了可以释放内存
1、读取数据
①将每条数据存储成字典类型
def read_data_dict(self): """读取数据(将每条数据存储成字典类型)""" # 打开工作簿 self.open() # 通过rows获取excel文件中所有的行数据,然后把数据转成列表 rows = list(self.sh.rows) # 表头 title = [] # 遍历excel文件中的第一行表头信息 for i in rows[0]: title.append(i.value) # 用例数据列表 cases = [] # 遍历用例数据行 for row in rows[1:]: # 定义一个列表存放每一行的数据 data = [] # 遍历每一行的数据 for r in row: data.append(r.value) # 把每一行的数据通过zip进行打包,然后转成字典,存入到用例数据列表中 case = dict(zip(title, data)) cases.append(case) return cases
②将每条数据存储成casedata类对象类型
class casedata(object): """保存用例数据类""" pass
def read_data_obj(self): """读取数据(将数据保存到casedata类中)""" self.open() rows = list(self.sh.rows) # 表头 title = [] # 遍历excel文件中的第一行表头信息 for i in rows[0]: title.append(i.value) # 定义用例列表,用来存放用例类列表 cases = [] # 遍历用例数据行 for row in rows[1:]: # 定义一个列表存放每一行的数据 data = [] # 遍历每一行的数据 for r in row: data.append(r.value) # 把每一行的数据通过zip进行打包,然后转成字典,存入到用例数据列表中 case = dict(zip(title, data)) # 定义一个用例存放类对象 case_obj = casedata() for k, v in case.items(): # 通过setattr()给对象添加属性 setattr(case_obj, k, v) # 把对象添加到列表中 cases.append(case_obj) return cases
2、写入数据
def write_data(self, row, column, value): """ 写入数据 :param row: 行 :param column: 列 :param value: 数据 """ self.open() # 指定行列进行写入数据 self.sh.cell(row=row, column=column, value=value) # 保存 self.wb.save(self.filename) # 关闭 self.wb.close()
**需要用到操作excel的时候可以直接进行调用,减少重复的代码量。
推荐阅读
-
使用Python3比较两份Excel表格的不同
-
Excel表格使用trunc函数去除小数点后面的数字只保留整数
-
Excel中使用自定义样式快速统一表格字体让其更美化一些
-
Excel2003使用条件格式设置表格数据提前3天红底色自动提醒
-
python rolling regression. 使用 Python 实现滚动回归操作
-
Python使用Pandas库常见操作详解
-
使用Python操作Elasticsearch数据索引的教程
-
Python使用cx_Oracle模块操作Oracle数据库详解
-
python中使用 xlwt 操作excel的常见方法与问题
-
Python的Django框架中使用SQLAlchemy操作数据库的教程