为什么要有这篇博文呢,因为,去年的9月份开学初迷迷糊糊就当了班长。后来,要评奖评优,统计班级里每个同学的绩点什么的,由于我的excel实在是不熟练,当时就写了个程序,只要输入相应的分数就自动转换得到绩点,记录一下,以后要操作excel可能还有用呢。
import openpyxl #可进行读写和修改excel文件 #利用openpyxl读excel文件 #获取工作簿对象 workbook=openpyxl.load_workbook(r"C:UsersxiaobaoDesktop17计应2班名单.xlsx") #python原始字符串 #获取所有工作表名,返回一个列表 shenames=workbook.sheetnames #print(shenames) #获取工作表对象 worksheet=workbook.worksheets[0] #获取工作表属性 name=worksheet.title #print(name) #获取该表的行数和列数 rows=worksheet.max_row columns=worksheet.max_column #print(rows,columns) #获取单元格数据 #以行或列获取整个工作表数据 ''' for row in worksheet.rows: for cell in row: print(cell.value,end=" ") print() for col in worksheet.columns: for cell in col: print(cell.value,end=" ") print() ''' #获取特定行或特定列数据 ''' for cell in list(worksheet.rows)[2]: #获取第三行的数据 print(cell.value,end=" ") print() ''' sid=[] #保存学号,后面用于写入数据 for cell in list(worksheet.columns)[0]: #获取第一列的数据 sid.append(cell.value) #print(cell.value,end=" ") print() print(sid) sname=[] #保存姓名 for cell in list(worksheet.columns)[1]: sname.append(cell.value) #print(cell.value,end=" ") print() print(sname) deyufen=[] #保存德育分数 for cell in list(worksheet.columns)[2]: deyufen.append(cell.value) #print(cell.value,end=" ") print() print(deyufen) deyujd=[] #保存德育绩点 for score in range(1,len(deyufen)): if deyufen[score] < 60: jd=0 jd=round(jd,3) #将结果保留三位小数 deyujd.append(jd) else: jd=1.00+(deyufen[score]-60)*0.10 jd=round(jd,3) deyujd.append(jd) print() print(deyujd) zhiyufen=[] #保存智育分数 for cell in list(worksheet.columns)[3]: zhiyufen.append(cell.value) #print(cell.value,end=" ") print() print(zhiyufen) tiyufen=[] #保存体育分数 for cell in list(worksheet.columns)[4]: tiyufen.append(cell.value) #print(cell.value,end=" ") print() print(tiyufen) ''' tiyujd=[] #保存体育绩点 for score in range(1,len(tiyufen)): if tiyufen[score] < 60: jd=0 jd=round(jd,3) tiyujd.append(jd) else: jd=1.00+(tiyufen[score]-60)*0.1 jd=round(jd,3) tiyujd.append(jd) print() print(tiyujd) ''' nenglifen=[] #保存能力分数 for cell in list(worksheet.columns)[5]: nenglifen.append(cell.value) #print(cell.value,end=" ") print() print(nenglifen) nenglijd=[] #保存能力绩点 for score in range(1,len(nenglifen)): if nenglifen[score] < 60: jd=0 jd=round(jd,3) nenglijd.append(jd) else: jd=1.00+(nenglifen[score]-60)*0.10 jd=round(jd,3) nenglijd.append(jd) print() print(nenglijd) print() zonghefen=[] for row in list(worksheet.rows)[1:54]: for cell in row[2:6]: zonghefen.append(cell.value) #print(cell.value,end=" ") print(zonghefen) print() linshilist=[] #临时列表 zonghejd=[] #保存综合绩点 for i in range(len(zonghefen)): if i % 4 < 3: linshilist.append(zonghefen[i]) else: linshilist.append(zonghefen[i]) s=linshilist[0]*0.20+linshilist[1]*0.55+linshilist[2]*0.05+linshilist[3]*0.20 #综合绩点计算公式 s=round(s,3) zonghejd.append(s) linshilist=[] print() print(zonghejd) print() #获取某一块数据,利用列表切片完成,获取第一行至第十五行的第一列至第二列数据 ''' for row in list(worksheet.rows)[0:16]: for cell in row[0:2]: print(cell.value,end=" ") print() ''' #获取某个单元格数据 content_B16=worksheet['B16'].value #print(content_B16) #写excel表 #创建一个workbook对象,相当于创建excel表 workbook1=openpyxl.Workbook() #获取工作表 worksheet1=workbook1.active #worksheet1.title="Mysheet" #创建新的工作表 worksheet2=workbook1.create_sheet() #默认插在工作簿末尾 #worksheet2=workbook1.create_sheet(0) #插入在工作簿的第一个位置 worksheet2.title="Newsheet" #写入数据到工作表 for i in range(len(sid)): worksheet1.cell(i+1,1,sid[i]) #写第一列数据学号 for i in range(len(sname)): worksheet1.cell(i+1,2,sname[i]) #写第二列数据姓名 project=['德育绩点','智育绩点','体育绩点','能力绩点','综合绩点'] for i in range(len(project)): worksheet1.cell(1,i+3,project[i]) for i in range(len(deyujd)): worksheet1.cell(i+2,3,deyujd[i]) for i in range(1,len(zhiyufen)): worksheet1.cell(i+1,4,zhiyufen[i]) for i in range(1,len(tiyufen)): worksheet1.cell(i+1,5,tiyufen[i]) for i in range(len(nenglijd)): worksheet1.cell(i+2,6,nenglijd[i]) #保存excel文件 workbook1.save(filename=r"C:UsersxiaobaoDesktop17计应2综合考评绩点.xlsx")