def write(c,book): sheet = book.add_sheet("PlanTotalsExpanded") #new sheet freezePanes(sheet, 1) columnWidth(sheet, 10) courseNameStr = 'Course Name' termNameStr = 'Term' enrollmentsNameStr = 'Enrollments' columns = {courseNameStr : 0, termNameStr : 1, enrollmentsNameStr : 2} #hardcoded columns for columnName in columns: #write hardcoded columns sheet.write(0, columns[columnName], columnName) hardColumns = len(columns) c.execute("SELECT DISTINCT course_id FROM courses;") courseList = c.fetchall() planList = data.grabFullPlanList(c) for plan in planList: #writing all column headings for each plan columns[plan] = planList.index(plan) + hardColumns sheet.write(0, columns[plan], plan) count = 1 for course in courseList: #iterate through all the courses course = course[0] courseName = data.grabCourseName(c, course) #write down the courses in the first row sheet.write(count,columns[courseNameStr],courseName) term = data.grabCourseTerm(c, course) sheet.write(count, columns[termNameStr], term) totEnrollments = data.grabEnrollmentNumber(c,course) sheet.write(count,columns[enrollmentsNameStr], totEnrollments) for plan in planList: #interate through all the plans studCount = data.grabStudentPlanEnroll(c, plan[0], course) #gotta unpack that plan sheet.write(count, columns[plan], studCount) count = count + 1 return True
def write(c,book): sheet = book.add_sheet("YearTotals") columnWidth(sheet, 7) freezePanes(sheet,1) c.execute("SELECT DISTINCT course_id FROM courses;") courseList = c.fetchall() courseNameStr = 'Course Name' termNameStr = 'Term' enrollmentsNameStr = 'Enrollments' columns = {courseNameStr : 0, termNameStr : 1, enrollmentsNameStr : 2} hardCodedColumns = len(columns) for columnName in columns: sheet.write(0, columns[columnName], columnName) c.execute("SELECT DISTINCT proj_level FROM students;") yearList = c.fetchall() for year in yearList: columns[year] = yearList.index(year) + hardCodedColumns sheet.write(0, columns[year],"Year " + str(year[0])) count = 1 for course in courseList: #iterate through all the courses course = course[0] courseName = data.grabCourseName(c, course) #write down the courses in the first row sheet.write(count, columns[courseNameStr], courseName) term = data.grabCourseTerm(c, course) sheet.write(count, columns[termNameStr], term) enrollments = data.grabEnrollmentNumber(c, course) sheet.write(count, columns[enrollmentsNameStr], enrollments) for year in yearList: #iterate through years 1,2,3,4 yearCount = data.grabStudentYearEnroll(c, year[0], course) sheet.write(count, columns[year], yearCount) #write to the sheet enrollment(course,year) count = count + 1 return True
def write(c,book): sheet = book.add_sheet("ProgramTotals") freezePanes(sheet,1) informationStartRow = 1 columnWidth(sheet, 6) c.execute("SELECT DISTINCT course_id FROM courses;") courseList = c.fetchall() c.execute("SELECT DISTINCT program FROM students;") programsList = c.fetchall() courseNameStr = 'Course Name' termNameStr = 'Term' enrollmentNameStr = 'Enrollments' fYrArtsStr = 'Arts (1st)' #these help differentiate between 1st year artsci HONOURS and upper year artsci HONOURS fYrSciStr = 'Science (1st)' upYrArtsStr = 'Arts Hon (2-4)' upYrSciStr = 'Science Hon (2-4)' columns = { courseNameStr : 0, termNameStr : 1, enrollmentNameStr : 2, fYrArtsStr : 3, fYrSciStr : 4, upYrArtsStr : 5, upYrSciStr : 6, } #Creating all the headings (Course Name, BA, BAH, BSCH...) and hard code 1st year arts and sci for columnName in columns: #write hardcoded column headings (Name, total enrollment, etc) sheet.write(0, columns[columnName], columnName) hardColumns = len(columns) for program in programsList: #Writing all the column headings to the excel sheet columns[program] = programsList.index(program) + hardColumns sheet.write(0, columns[program], program) count = informationStartRow for course in courseList: #Outputs the course codes in column 0 (ANAT 215, 216) course = course[0] #unpack the tuple courseName = data.grabCourseName(c, course) sheet.write(count, columns[courseNameStr], courseName) term = data.grabCourseTerm(c,course) sheet.write(count, columns[termNameStr], term) enrollments = data.grabEnrollmentNumber(c,course) sheet.write(count, columns[enrollmentNameStr], enrollments) for program in programsList: #Outputs enrollments for all programs (except 1st year Arts Sci) studCount = data.grabStudentEnrollment(c, program[0], course) sheet.write(count, columns[program], studCount) #Breaking down between 1st year and upper year Arts and Sci HONOURS firstYrArts = data.grabStudentProgYearEnroll(c, "BAH", 1, course) firstYrSci = data.grabStudentProgYearEnroll(c, "BSCH",1, course) upYrArts = data.grabStudentEnrollment(c, "BAH", course) - firstYrArts upYrSci = data.grabStudentEnrollment(c, "BSCH", course) - firstYrSci sheet.write(count, columns[fYrArtsStr], firstYrArts) sheet.write(count, columns[fYrSciStr], firstYrSci) sheet.write(count, columns[upYrArtsStr], upYrArts) sheet.write(count, columns[upYrSciStr], upYrSci) count = count + 1 return True
def write(c, book): cutoff = 10 #cutoff range for number of plan enrollments planBreakdown = book.add_sheet("Plans Breakdown") columnWidth(planBreakdown, 10) c.execute("SELECT DISTINCT course_id FROM courses;") courseList = c.fetchall() courseNameStr = 'Course Name' termNameStr = 'Term' enrollmentsNameStr = 'Enrollments' planList = data.grabFullPlanList(c) columns = {courseNameStr : 0, termNameStr : 1, enrollmentsNameStr : 2} hardCodedColumns = len(columns) sigPlanList = [] #filter out plans with very little enrollments in DBMS courses (eg ENG or COMM plans) for plan in planList: '''Iterates through each plan. With a particular plan, iterate through all the courses. If the number of people in that plan cannot exceed 10 people for any of the courses, they will not be included in this sheet. The second for loop FILTERS ''' studCount = [] addToList = False for course in courseList: course = course[0] studCount.append(data.grabStudentPlanEnroll(c, plan[0], course)) for count in studCount: if count > cutoff: addToList = True break if addToList: #only add to the new list if there are enough enrollments sigPlanList.append(plan) for columnName in columns: planBreakdown.write(0, columns[columnName], columnName) for plan in sigPlanList: #only write the relevant plans into each column columns[plan] = sigPlanList.index(plan) + hardCodedColumns planBreakdown.write(0, columns[plan], plan) count = 1 for course in courseList: '''This for loop WRITES ''' course = course[0] courseName = data.grabCourseName(c, course) planBreakdown.write(count,columns[courseNameStr],courseName) term = data.grabCourseTerm(c, course) planBreakdown.write(count, columns[termNameStr], term) enrollments = data.grabEnrollmentNumber(c, course) planBreakdown.write(count, columns[enrollmentsNameStr],enrollments) for plan in sigPlanList: studCount = data.grabStudentPlanEnroll(c, plan[0], course) #gotta unpack that plan planBreakdown.write(count, columns[plan], studCount) count = count + 1 planBreakdown.set_panes_frozen(True) planBreakdown.set_horz_split_pos(1) #Freeze panes for the first row return True
def write(c,book): ''' Outputs the sheet with all the revenue values. ''' sheet = book.add_sheet("Revenue Course Totals") freezePanes(sheet, 1) twoDecimalStyle = xlwt.XFStyle() #styling for using two decimals twoDecimalStyle.num_format_str = '0.00' columnWidth(sheet, 14) courseNameStr = 'Course Name' #hard coded values termNameStr = 'Term' creditsNameStr = 'Credits' enrollmentNameStr = 'Enrollments' grantValNameStr = 'Grant Value ($)' tuitValNameStr = 'Tuition Value ($)' totRevNameStr = 'Total Revenue ($)' grantStudNameStr = 'Grant per Student' tuitStudNameStr = 'Tuition per Student' revStudNameStr = 'Revenue per Student' columns = {courseNameStr : 0, termNameStr : 1, creditsNameStr : 2, enrollmentNameStr : 3, grantValNameStr : 4, tuitValNameStr : 5, totRevNameStr : 6, grantStudNameStr : 7, tuitStudNameStr : 8, revStudNameStr : 9 } for heading, colNum in columns.iteritems(): sheet.write(0, colNum, heading) c.execute("SELECT DISTINCT course_id FROM courses;") courseList = c.fetchall() enrollTot = 0 #HARDCODE FOR THE TOTALS OF CERTAIN METRICS grantTot = 0 tuitionTot = 0 totalTot = 0 count = 1 #used to increment the row number for course in courseList: course = course[0] #unpack the tuple courseName = data.grabCourseName(c, course) sheet.write(count, columns[courseNameStr], courseName) term = data.grabCourseTerm(c, course) sheet.write(count, columns[termNameStr], term) credits = data.grabCourseCredits(c,course) sheet.write(count, columns[creditsNameStr] , credits, twoDecimalStyle) enrollment = data.grabEnrollmentNumber(c, course) enrollTot = enrollTot + enrollment sheet.write(count, columns[enrollmentNameStr] , enrollment) grantVal = grant.runAppCourse(course) grantTot = grantTot + grantVal sheet.write(count, columns[grantValNameStr], grantVal, twoDecimalStyle) tuitionVal = tuition.runAppCourse(course) tuitionTot = tuitionTot + tuitionVal sheet.write(count, columns[tuitValNameStr], tuitionVal, twoDecimalStyle) total = grantVal + tuitionVal totalTot = totalTot + total sheet.write(count, columns[totRevNameStr], total, twoDecimalStyle) grantPerStud = grantVal / enrollment sheet.write(count, columns[grantStudNameStr], grantPerStud, twoDecimalStyle) tuitionPerStud = tuitionVal / enrollment sheet.write(count, columns[tuitStudNameStr], tuitionPerStud, twoDecimalStyle) revenuePerStud = total / enrollment sheet.write(count, columns[revStudNameStr], revenuePerStud, twoDecimalStyle) count = count + 1 #used to icnrement row number sheet.write(count,columns[courseNameStr], "Totals") sheet.write(count,columns[enrollmentNameStr], enrollTot) #HARDCODE FOR THE TOTALS OF CERTAIN METRICS sheet.write(count, columns[grantValNameStr], grantTot, twoDecimalStyle) sheet.write(count,columns[tuitValNameStr], tuitionTot, twoDecimalStyle) sheet.write(count,columns[totRevNameStr], totalTot, twoDecimalStyle) return True
def write(c, book): ''' Tried to imitate what Dan Adams had for his "Enrollment by Program" Sheet For each program, it will have a column for # of weighted enrollments, and also percentage of total enrollments ''' sheet = book.add_sheet("Weighted Program Enroll") twoDecimalStyle = xlwt.XFStyle() twoDecimalStyle.num_format_str = '0.00' freezePanes(sheet,1) informationStartRow = 1 columnWidth(sheet, 9) c.execute("SELECT DISTINCT course_id FROM courses;") courseList = c.fetchall() c.execute("SELECT DISTINCT program FROM students;") programsList = c.fetchall() courseNameStr = 'Course Name' termNameStr = 'Term' enrollmentNameStr = 'W. Enrollments' DBMSNameStr = "W. DBMS" DBMSPerNameStr = "% DBMS" #List of all the DBMS plans. This excludes the minors. DBMSPlans = ['LISC-G-BSC', 'LISC-M-BSH', 'LISC-P-BSH', 'LISC-Z-3', 'BCHM-G-BSC', 'BCHM-M-BSH', 'BCHM-P-BSH', 'BCHM-Z-3', ] ArtSciNameStr = "W. ArtSci" #all other plans with degree program BA, BAH, BSC... ArtSciPerNameStr = "% ArtSci" NursNameStr = "W. NURS" #all those with BNURS NursPerNameStr = "% NURS" EngNameStr = "W. ENG" #all those with BSCE, , etc EngPerNameStr = "% ENG" CommNameStr = "W. COMM" CommPerNameStr = "% COMM" columns = { courseNameStr : 0, termNameStr : 1, enrollmentNameStr : 2, DBMSNameStr : 3, DBMSPerNameStr: 4, ArtSciNameStr : 5, ArtSciPerNameStr : 6, NursNameStr : 7, NursPerNameStr : 8, EngNameStr : 9, EngPerNameStr : 10, CommNameStr : 11, CommPerNameStr : 12, } for columnName in columns: sheet.write(0, columns[columnName], columnName) count = informationStartRow courseWeightedTotal = 0 for course in courseList: course = course[0] courseWeight = data.grabCourseCredits(c, course) weighting = courseWeight / 3.0 #the weighting adjusts the number of Full Time Enrollments (FTE) courseName = data.grabCourseName(c, course) sheet.write(count, columns[courseNameStr], courseName) term = data.grabCourseTerm(c, course) sheet.write(count, columns[termNameStr], term) enrollments = data.grabEnrollmentNumber(c, course) enrollments = enrollments * weighting #total weighted sheet.write(count, columns[enrollmentNameStr], enrollments) courseWeightedTotal = courseWeightedTotal + enrollments DBMSEnrollments = 0 for plan in DBMSPlans: DBMSEnrollments = DBMSEnrollments + data.grabStudentPlanEnroll(c,plan,course) #DBMS Columns DBMSEnrollments = DBMSEnrollments * weighting #number of all those in DBMS majors sheet.write(count,columns[DBMSNameStr],DBMSEnrollments) DBMSPerEnrollments = DBMSEnrollments / enrollments #Percentage of all those in DBMS majors sheet.write(count, columns[DBMSPerNameStr], DBMSPerEnrollments * 100, twoDecimalStyle) #Nursing Columns NursEnrollments = data.grabStudentEnrollment(c, "BNSC", course) sheet.write(count, columns[NursNameStr], NursEnrollments) NursPerEnrollments = NursEnrollments / enrollments sheet.write(count, columns[NursPerNameStr], NursPerEnrollments * 100, twoDecimalStyle) #Engineering Columns EngEnrollments = data.grabStudentEnrollment(c, "BSCE", course) EngEnrollments = EngEnrollments + data.grabStudentEnrollment(c, "UENG", course) sheet.write(count, columns[EngNameStr], EngEnrollments) EngPerEnrollments = EngEnrollments / enrollments sheet.write(count, columns[EngPerNameStr], EngPerEnrollments * 100, twoDecimalStyle) #Commerce Columns CommEnrollments = data.grabStudentEnrollment(c, "BCOM", course) sheet.write(count, columns[CommNameStr], CommEnrollments) CommPerEnrollments = CommEnrollments / enrollments sheet.write(count, columns[CommPerNameStr], CommPerEnrollments * 100, twoDecimalStyle) #ArtSci Columns ArtSciEnrollments = enrollments - DBMSEnrollments - NursEnrollments - EngEnrollments - CommEnrollments sheet.write(count, columns[ArtSciNameStr], ArtSciEnrollments) ArtSciPerEnrollments = ArtSciEnrollments / enrollments sheet.write(count, columns[ArtSciPerNameStr], ArtSciPerEnrollments * 100, twoDecimalStyle) count = count + 1 return True