excel类封装

excel类封装需要提供以下功能:

1、打开表单

2、读取标题

3、读取所有的数据

4、指定单元格写入数据(使用静态方法,不要使用实例方法)

import openpyxl


class ExcelHandler:
    def __init__(self, file):
        # 初始化函数
        self.file = file

    def open_sheet(self, name):     # 打开excel表
        wb = openpyxl.load_workbook(self.file)
        # 通过表单名获取
        sheet = wb[name]
        return sheet

    def read_title(self, sheet_name):   # 读取标题
        # 调用open_sheet函数
        sheet = self.open_sheet(sheet_name)
        title = []
        for i in sheet[1]:
            # 将读取到的值存入到title中
            title.append(i.value)
        return title

    def read_data(self, sheet_name):
        sheet = self.open_sheet(sheet_name)
        # sheet.rows获取所有行
        rows = list(sheet.rows)
        datas = []
        # 数据从第二行开始,第一行是标题
        for row in rows[1:]:
            data = []
            for cell in row:
                data.append(cell.value)
                # 使用zip将两个列表组合成字典
                data_dict = dict(zip(self.read_title(sheet_name), data))
            datas.append(data_dict)
        return datas

    @staticmethod
    def write_data(file, sheet_name, row, column, data):        #写入传入了路径,表单名,行,列,修改的内容等参数
        wb = openpyxl.load_workbook(file)
        sheet = wb[sheet_name]
        sheet.cell(row, column).value = data
        wb.save(file)
        wb.close()

if __name__ == "__main__":
    # 测试数据
    excel = ExcelHandler(r"C:UsersskyDesktoppythoncases.xlsx")
    print(excel.read_title("Sheet1"))
    print(excel.read_data("Sheet1"))
    excel.write_data(r"C:UsersskyDesktoppythoncases.xlsx", "Sheet1", 2, 1,"liuxing")

  

原文地址:https://www.cnblogs.com/kkkhycz/p/12146027.html