From 8e98eeee6426ae75a7d960152ae85450d8be8a19 Mon Sep 17 00:00:00 2001 From: darkicewolf50 <darkicewolf50@gmail.com> 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