From 8e98eeee6426ae75a7d960152ae85450d8be8a19 Mon Sep 17 00:00:00 2001 From: darkicewolf50 Date: Sat, 7 Dec 2024 16:05:34 -0700 Subject: [PATCH] feat(NoSheet): default sheet creator finished --- NoSheet.py | 76 ++++++++++++++++++++++++------------- OR25-L-Interview Data.xlsx | Bin 0 -> 6733 bytes requirements.txt | 3 +- temp.yml | 5 ++- 4 files changed, 55 insertions(+), 29 deletions(-) create mode 100644 OR25-L-Interview Data.xlsx 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 0000000000000000000000000000000000000000..cfa75ffdf1c0e40745315517b036a3d2174c615a GIT binary patch literal 6733 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 P7Yi_OTbCTje!cx4g3-|H literal 0 HcmV?d00001 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