欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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的时候可以直接进行调用,减少重复的代码量。