def control_room_start_fix_process(self, data, original):
        tables = Tables()
        excel = Files()
        google = Google()
        conflicts = []
        updated_table = tables.export_table(original,
                                            with_index=True,
                                            as_list=False)
        for k in data.keys():
            copyof_orig = copy.deepcopy(original)
            if "nameerror" in k:
                mid, _ = data[k].split(" - ")
                tables.filter_table_by_column(copyof_orig, "Account Id", "==",
                                              mid)
                row = tables.get_table_row(copyof_orig, 0)
                conflicts.append({"id": mid, "name": row["Name in SAP"]})
                name_position = updated_table["Account Id"].index(mid)
                updated_table["Name OK in SFDC"][name_position] = "TRUE"

        if conflicts:
            self.control_room_run_process(CONTROL_ROOM_PROCESS_FIX_SFDC,
                                          conflicts)

        google.set_robocorp_vault(vault_name="googlecloud",
                                  vault_secret_key="credentials")
        google.init_drive(use_robocorp_vault=True)
        del updated_table["index"]
        excel.create_workbook(COMPARISON_EXCEL)
        excel.append_rows_to_worksheet(updated_table, header=True)
        excel.save_workbook()
        google.drive_upload_file(COMPARISON_EXCEL,
                                 GOOGLE_DRIVE_SYNC_FOLDER,
                                 overwrite=True)
def generate_data(user_count=100, feedback_count=5):
    fake = Faker()
    files = Files()

    files.create_workbook("userdata.xlsx")
    files.create_worksheet("profile", exist_ok=True)
    files.create_worksheet("feedback", exist_ok=True)

    users = []
    names = []
    for i in range(user_count):
        userprofile = fake.profile()
        if userprofile["name"] in names:
            print("name %s already exists", userprofile["name"])
            continue
        userprofile.pop("website")
        userprofile.pop("current_location")
        files.append_rows_to_worksheet(userprofile, "profile", header=True)
        users.append(userprofile)

    for i in range(1, 16):
        selected_user = users[i]
        feedback = {
            "name": selected_user["name"],
            "feedback": choice(good_feedback)
        }
        print(feedback)
        files.append_rows_to_worksheet(feedback, "feedback", header=True)

    for i in range(17, 22):
        selected_user = users[i]
        feedback = {
            "name": selected_user["name"],
            "feedback": choice(neutral_feedback)
        }
        print(feedback)
        files.append_rows_to_worksheet(feedback, "feedback", header=True)

    for i in range(23, 28):
        selected_user = users[i]
        feedback = {
            "name": selected_user["name"],
            "feedback": choice(bad_feedback)
        }
        print(feedback)
        files.append_rows_to_worksheet(feedback, "feedback", header=True)

    files.remove_worksheet("Sheet")
    files.save_workbook()
class ExcelUtility:
    def __init__(self, path_to_excel_file: str):
        self.path_to_file = path_to_excel_file
        self.lib = Files()

    def open_file(self):
        if self.lib is None:
            self.lib = Files()

        self.lib.open_workbook(self.path_to_file)

    def set_active_sheet(self, sheet_name: str):
        self.lib.set_active_worksheet(sheet_name)

    def write_agencies_to_file(self, agencies: []):
        row_number: int = 2
        for item in agencies:
            agency: AgencyModel = item
            self.lib.set_worksheet_value(row_number, 1, agency.name)
            self.lib.set_worksheet_value(row_number, 2, agency.amount)
            self.lib.set_worksheet_value(row_number, 3, agency.link)
            row_number += 1

    def write_table_page_data_to_file(self, data: [], row_number: int = 2):
        for item in data:
            indv_invst_item: IndividualInvestmentsModel = item
            self.lib.set_worksheet_value(row_number, 1, indv_invst_item.uii)
            self.lib.set_worksheet_value(row_number, 2,
                                         indv_invst_item.uii_link)
            self.lib.set_worksheet_value(row_number, 3, indv_invst_item.bureau)
            self.lib.set_worksheet_value(row_number, 4,
                                         indv_invst_item.investment_title)
            self.lib.set_worksheet_value(row_number, 5,
                                         indv_invst_item.total_fy_spending)
            self.lib.set_worksheet_value(row_number, 6, indv_invst_item.type_)
            self.lib.set_worksheet_value(row_number, 7,
                                         indv_invst_item.cio_rating)
            self.lib.set_worksheet_value(row_number, 8,
                                         indv_invst_item.project_num)
            row_number += 1

        return row_number

    def save_and_close_file(self) -> object:
        if self.lib is not None:
            self.lib.save_workbook(self.path_to_file)
            self.lib.close_workbook()