python封装函数自动读写excel数据

python封装函数自动读写excel数据


操作excel文档需要先安装openpyxl库,pip install openpyxl;

import openpyxl


class CaseData:
    pass


class HandleExcel:

    def __init__(self, filename, sheetname):
        """获取文件名和表单名"""
        self.filename = filename
        self.sheetname = sheetname

    def open(self):
        # 打开文件
        self.wb = openpyxl.load_workbook(self.filename)
        # 选中表单
        self.sh = self.wb[self.sheetname]

    def read_excel(self):
        """excel获取数据"""
        self.open()
        # 按行读取表单中的数据
        rows = list(self.sh.rows)
        # 列表推导式,获取第一行的表头加入列表中
        title = [x1.value for x1 in rows[0]]
        # 定义空列表用于存放数据
        cases = []
        # 获取除表头外的所有数据
        for row in rows[1:]:
            # 获取该行数据放入列表中
            list1 = [x2.value for x2 in row]
            # 创建CaseData类的对象
            case = CaseData()
            # 将表头与数据进行聚合打包,遍历
            for i in zip(title, list1):
                # 通过setattr反射机制,将表头设为对象属性,对应值设为属性值
                setattr(case, i[0], i[1])
            # 将整理好的数据添加到列表中
            cases.append(case)
        # 关闭工作簿
        self.wb.close()

        return cases

    def write_excel(self, row, column, value):
        """excel写入数据"""
        # 打开工作簿和表单
        self.open()
        # 写入数据
        self.sh.cell(row=row, column=column, value=value)
        # 保存文件
        self.wb.save(self.filename)
        # 关闭工作簿
        self.wb.close()


if __name__ == '__main__':
    read = HandleExcel('datas.xlsx', 'test')
    # print(read.read_excel())
    read.write_excel(1, 1, 'Pass')

你可能感兴趣的:(python封装函数自动读写excel数据)