所用文件、數據和上一節代碼中用的一致
本次直接貼代碼
1 from openpyxl.styles import fills 2 from openpyxl import load_workbook 3 class DoExcel: 4 def __init__(self,filename): 5 ''' 6 :param filename: excel文件名 7 ''' 8 self.file = filename 9 self.wk = load_workbook(self.file) 10 11 def do_excel(self,sheetname): 12 ''' 13 :param sheetname: 工作簿名稱 14 :return: 15 ''' 16 sheet = self.wk[sheetname] 17 max_row = sheet.max_row #最大行 18 max_column = sheet.max_column #最大列 19 data = [] #定義一個空列表,用於存儲所有數據 20 for r in range(2,max_row+1): 21 subdata = {} #定義一個字典,用於存儲每行數據 22 for c in range(1,max_column+1): 23 key = sheet.cell(1,c).value #取第一行表頭數據 24 subdata[key] = sheet.cell(r,c).value #字典格式,表頭作為key 25 data.append(subdata) 26 return data 27 #將返回結果回寫到excel文件單元格中 28 def write_back(self,sheet_name,row,col,value,color): 29 ''' 30 :param sheet_name: 工作簿名稱 31 :param row: 寫入行 32 :param col: 寫入列 33 :param value: 寫入值 34 :param color: 背景顏色 35 :return: 36 ''' 37 sheet = self.wk[sheet_name] 38 sheet.cell(row, col).value = value 39 sheet.cell(row, col).fill = fills.GradientFill(stop=(color, color)) 40 self.wk.save(self.file) 41 42 if __name__ == '__main__': 43 file_name = "test.xlsx" 44 datas = DoExcel(file_name).do_excel('students') 45 i = 2 46 for data in datas: 47 score = int(data.get('考試分數')) 48 if score >= 60: 49 t_pass = '及格' 50 color = 'FF0000' 51 else: 52 t_pass = '不及格' 53 color = '006030' 54 DoExcel(file_name).write_back('students',i,5,t_pass,color) 55 i = i+1
