python使用openpyxl操作excel表格-Python使用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的时候可以直接进行调用,减少重复的代码量。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值