openpyxl操作excel

from openpyxl import load_workbook

class MyExcel:

    def __init__(self,filename):
        # 打开工作薄
        try:
            self.__wb = load_workbook(filename)
        except:
            print("要操作的excel不存在,请检查!!")
            raise # 抛出异常

    def select_sheet_by_name(self,sheet_name):
        # # 判断表单名称是否存在
        # if sheet_name in self.__wb.sheetnames:
        #     self.sh = self.__wb[sheet_name]
        # else:
        #     print("表单名称不存在,请确认表单名称正确!!")
        try:
            self.sh = self.__wb[sheet_name]
        except:
            print("表单名称不存在,请确认表单名称正确!!")
            raise

    def get_cell_data_by_row_and_column(self,row,col):
        print(type(row))   # 调试  debug   更细致。
        if type(row) is int and type(col) is int:
            if row >=1 and col >=1:
                print("读取了{}行{}列的数据。")  # info
                return self.sh.cell(row,col).value
            else:
                print("下标必须大于1")   # error
        else:
            print("参数类型错误!行号和列号应该为整数。")  # error

    # 获取 一行数据
    def get_row_datas_by_row_num(self,row):
        # 整行数据
        row_datas =[]
        if type(row) is int:
            # 遍历列
            for col in range(1,self.sh.max_column+1):
                row_datas.append(self.sh.cell(row,col).value)
        return row_datas

    def get_all_datas(self):
        # 所有数据
        all_datas = []
        # 遍历行,调用上一个函数。
        for row in range(1,self.sh.max_row +1):
            row_datas = self.get_row_datas_by_row_num(row)
            all_datas.append(row_datas)
        return all_datas

    # 更新单无格的数据
    def update_cell_data_by_row_and_column(self,row,col,new_value):
        if type(row) is int and type(col) is int:
            if row >= 1 and col >= 1:
                self.sh.cell(row, col).value = new_value

    # 保存数据
    def save_datas_to_file(self,filename):
        try:
            self.__wb.save(filename)
        except PermissionError:
            print("文件权限被占用,无法保存。保存失败!!")
            raise
        except FileNotFoundError:
            print("文件路径不存在,请检查!!")
            raise
        except:
            print("文件保存失败,请检查原因!!!")
            raise

# 你的使用目标不明确。没有明显的应用场景。

if __name__ == "__main__":
    # 测试
    me = MyExcel("datas.xlsx")  # 加载文件
    me.select_sheet_by_name("case_datas")  # 选择表单
    datas = me.get_row_datas_by_row_num(3) # 读一行数据
    print(datas)
    all = me.get_all_datas()   # 所有数据
    print(all)

    me.update_cell_data_by_row_and_column(7,7,"1111!!!")
    me.update_cell_data_by_row_and_column(9,9,"肥嘟嘟??")
    me.save_datas_to_file("datas.xlsx")

 

posted @ 2020-08-21 23:34  九州天空城  阅读(182)  评论(0编辑  收藏  举报