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:\Users\sky\Desktop\python\cases.xlsx") print(excel.read_title("Sheet1")) print(excel.read_data("Sheet1")) excel.write_data(r"C:\Users\sky\Desktop\python\cases.xlsx", "Sheet1", 2, 1,"liuxing")