一,源数据如下
需求:1. 按照班级把同一个班级的所有成员筛选出来。
2. 筛选出来的数据作为单独的Excel表生成保存
二,代码的编写
1 # -*- coding:utf-8 -*- 2 3 import openpyxl 4 5 # 1.加载Excel源数据 6 path = R"C:UsersAdministratorpython处理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:这里只打开一个文件作为例子。可以看出我们成功的把数据按照班级进行了划分