import pandas as pd import traceback def load_excel(file): df = pd.read_excel(file) return file, df def run_code(file, code): scope = {'pd': pd} if file: print('file ok') df = pd.read_excel(file) scope['df'] = df try: # Attempt to execute the user's code exec(code, scope, scope) except Exception as e: # Catch any exceptions that occur and print the error message error_msg = traceback.format_exc() print(f"Error executing user code: {error_msg}") scope['new_df'] = df # Use the original df if error occurs return scope['new_df'], error_msg # Return the error message along with the df print(scope.keys()) if 'new_df' not in scope: print("new_df not defined") scope['new_df'] = df.copy() new_df = scope['new_df'] return new_df, None # Return None as the error message when execution is successful else: print("No file provided") return pd.DataFrame(), "No file provided" def export_df(df, filename): filename = filename.replace('.xlsx', '_coded.xlsx') df.to_excel(filename, index=False) return filename