一,源數據如下
需求:1. 按照班級把同一個班級的所有成員篩選出來。
2. 篩選出來的數據作為單獨的Excel表生成保存
二,代碼的編寫
1 # -*- coding:utf-8 -*- 2 3 import openpyxl 4 5 # 1.加載Excel源數據 6 path = R"C:\Users\Administrator\python處理Excel數據\20200113\按照班級分離文件.xlsx" 7 workbook = openpyxl.load_workbook(path) 8 sheet_names = workbook.sheetnames 9 sheet1 = workbook[sheet_names[0]] 10 11 # 2. 讀取Excel sheet1中的所有數據 12 allDatas = [] 13 for row in sheet1.rows: 14 lines = [cell.value for cell in row] 15 allDatas.append(lines) 16 17 #划分班級 18 title = [] 19 class1 = [] 20 class2 = [] 21 class3 = [] 22 class4 = [] 23 class5 = [] 24 25 for i in allDatas: 26 if i[0] == "1": 27 class1.append(i) 28 elif i[0] == "2": 29 class2.append(i) 30 elif i[0] == "3": 31 class3.append(i) 32 elif i[0] == "4": 33 class4.append(i) 34 elif i[0] == "5": 35 class5.append(i) 36 else: 37 title.append(i) 38 class1.insert(0,title[0]) # 把每個生成的Excel中插入title 39 class2.insert(0,title[0]) 40 class3.insert(0,title[0]) 41 class4.insert(0,title[0]) 42 class5.insert(0,title[0]) 43 print(class1) 44 # 把每個年級的數據分別保存為一個文件 45 def get_datas(datas,path): 46 workbook = openpyxl.Workbook() 47 worksheet = workbook.active 48 # worksheet.title = "Class1_Datas" 49 counter = 0 50 for lines in datas: 51 #print(lines) 52 counter = counter + 1 53 for i in range(len(lines)): 54 worksheet.cell(counter, i + 1, lines[i]) 55 workbook.save(path) 56 return workbook 57 58 if __name__ == "__main__": 59 #設定生成文件的路徑並指明文件名 60 class1_datas = R"C:\\Users\\Administrator\\python處理Excel數據\\20200113\\各個班級成績單\\class1_datas.xlsx" 61 class2_datas = R"C:\\Users\\Administrator\\python處理Excel數據\\20200113\\各個班級成績單\\class2_datas.xlsx" 62 class3_datas = R"C:\\Users\\Administrator\\python處理Excel數據\\20200113\\各個班級成績單\\class3_datas.xlsx" 63 class4_datas = R"C:\\Users\\Administrator\\python處理Excel數據\\20200113\\各個班級成績單\\class4_datas.xlsx" 64 class5_datas = R"C:\\Users\\Administrator\\python處理Excel數據\\20200113\\各個班級成績單\\class5_datas.xlsx" 65 66 #調用方法寫入文件 67 print("班級1成績單生成成功!",get_datas(class1,class1_datas)) 68 print("班級2成績單生成成功!",get_datas(class2, class2_datas)) 69 print("班級3成績單生成成功!", get_datas(class3, class3_datas)) 70 print("班級4成績單生成成功!",get_datas(class4, class4_datas)) 71 print("班級5成績單生成成功!",get_datas(class5, class5_datas))
三,結果生成
圖1:為調用生成的文件數量
圖2:這里只打開一個文件作為例子。可以看出我們成功的把數據按照班級進行了划分