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")