diff --git a/NoSheet.py b/NoSheet.py index 3e0aa49..e5d9aab 100644 --- a/NoSheet.py +++ b/NoSheet.py @@ -2,7 +2,8 @@ import openpyxl import yaml import json import datetime -from openpyxl.styles import Font, Border, Side +from openpyxl.styles import Font, Border, Side, PatternFill +from openpyxl.formatting.rule import FormulaRule def NoSheet(): @@ -27,7 +28,7 @@ Recruitment Responses: - Academic Year: 1st - Why are you interested in joining UCalgary BAJA?: Example Interest - Where did you hear about us?: Testing - - Are you available for team meetings/work days? Saturdays 10 am - 4 pm: Yes #add condiftional formatting for no to make whole line red + - Are you available for team meetings/work days? Saturdays 10 am - 4 pm: "No" #add condiftional formatting for no to make whole line red Interview TimeTable: - Date: 9/16/2024 - Meeting Duration: 30 min @@ -37,52 +38,75 @@ Interview TimeTable: - Interviewee Email: steve.the.bug@ucalgary.ca - Category (if not general): Test - Interviewer(s) Name(s): Example - - Status: Dropdown (Options in datahelp) #default is Unkown + - Status: Dropdown (Options in datahelp) #default is Unknown Data Helper: - Status Dropdown: - Unknown - Done - No Show - Cancelled/Moved + - How to Add Dropdown: Go into data, click data validation, select list then select the area you want to get values from in the formula spot """ yamlsheet = yaml.safe_load(yamlraw) - print(json.dumps(yamlsheet, indent=4)) + # print(json.dumps(yamlsheet, indent=4)) - year_donation = int(str(datetime.datetime.now().year)[2:]) + 1 # gets the last two digits of the current year then adds 1 for the current season - file_name = f"OR{year_donation}-L-Interview Data.xlsx" # name based off the 2025 naming system - - sheet_names = [name for name in yamlsheet.keys()] + year_donation = int(str(datetime.datetime.now().year)[2:]) # gets the last two digits of the current year then adds 1 for the current season + file_name = f"OR{year_donation + 1}-L-Interview Data.xlsx" # name based off the 2025 naming system # border style - border = Border( - left=Side(style='medium'), - right=Side(style='medium'), - top=Side(style='medium'), - bottom=Side(style='medium') + border = Border( # defualt behaviour is thin + left=Side(style='thin'), + right=Side(style='thin'), + top=Side(style='thin'), + bottom=Side(style='thin') ) + # for conditional formatting + red_fill = PatternFill(start_color="FF0000", end_color="FF0000", fill_type="solid") + # create workbook in memory work_book = openpyxl.Workbook() - if len(sheet_names) > 0: - # remove default sheet - default_sheet = work_book.active - work_book.remove(default_sheet) + # remove default sheet + default_sheet = work_book.active + work_book.remove(default_sheet) - for sheet_name, title_list in yamlsheet.items(): - # add standard sheets - sheet = work_book.create_sheet(sheet_name) + for sheet_name, title_list in yamlsheet.items(): + # add standard sheets + sheet = work_book.create_sheet(sheet_name) + + titles = [list(title.keys())[0] for title in title_list] + + for col_num, title in enumerate(titles, start=1): + cell = sheet.cell(row=1, column=col_num) + cell.value = title + + cell.font = Font(bold=True) + cell.border = border + + + example_data = [list(data.values())[0] for data in title_list] + + for col_num, data in enumerate(example_data, start=1): + if isinstance(data, list): + row_num = 2 + for item in data: + cell = sheet.cell(row=row_num, column=col_num) + cell.value = item + row_num += 1 + else: + cell = sheet.cell(row=2, column=col_num) + cell.value = data + if data == "Dropdown (Options in datahelp)": + cell.value = "Unknown" + + if sheet.title == "Recruitment Responses": + sheet.conditional_formatting.add("A2:I2", FormulaRule(formula=['=$I2="No"'], fill=PatternFill(start_color="FF0000", end_color="FF0000", fill_type="solid"))) - titles = [list(title.keys())[0] for title in title_list] - for col_num, title in enumerate(titles, start=1): - cell = sheet.cell(row=1, column=col_num) - cell.value = title - cell.font = Font(bold=True) - cell.border = border diff --git a/OR25-L-Interview Data.xlsx b/OR25-L-Interview Data.xlsx new file mode 100644 index 0000000..cfa75ff Binary files /dev/null and b/OR25-L-Interview Data.xlsx differ diff --git a/requirements.txt b/requirements.txt index 593f982..0ca6768 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,4 @@ "fastapi[standard]" pandas -openpyxl \ No newline at end of file +openpyxl +yaml \ No newline at end of file diff --git a/temp.yml b/temp.yml index 3b156cf..a4d7d76 100644 --- a/temp.yml +++ b/temp.yml @@ -17,7 +17,7 @@ Recruitment Responses: - Academic Year: 1st - Why are you interested in joining UCalgary BAJA?: Example Interest - Where did you hear about us?: Testing - - Are you available for team meetings/work days? Saturdays 10 am - 4 pm: Yes #add condiftional formatting for no to make whole line red + - Are you available for team meetings/work days? Saturdays 10 am - 4 pm: "Yes" #add condiftional formatting for no to make whole line red Interview TimeTable: - Date: 9/16/2024 - Meeting Duration: 30 min @@ -27,10 +27,11 @@ Interview TimeTable: - Interviewee Email: steve.the.bug@ucalgary.ca - Category (if not general): Test - Interviewer(s) Name(s): Example - - Status: Dropdown (Options in datahelp) #default is Unkown + - Status: Dropdown (Options in datahelp) #default is Unknown Data Helper: - Status Dropdown: - Unknown - Done - No Show - Cancelled/Moved + - How to Add Dropdown: Go into data, click data validation, select list then select the area you want to get values from in the formula spot