Join the Inspire AMA with Joshua Burkhow, March 31-April 4. Ask, share, and connect with the Alteryx community!

Alteryx Designer Desktop Discussions

Find answers, ask questions, and share expertise about Alteryx Designer Desktop and Intelligence Suite.
SOLVED

Python issue in workflow

ppatane
8 - Asteroid

I have been searching for a solution for this issue everywhere and cannot find an answer.
In my workflow, I am passing 2 files (full paths and file names) to a Python Tool as First One and Second One, and then I want to move 3 tabs from First One to Second One, replacing the tabs with that name in Second One.

 

I am getting AlteryxEngine not defined, and I have tried all the below to get the engine function:

From ayx import Alteryx

engine = Alteryx.get_engine()

 

Or

 

From ayx import Alteryx

engine = Alteryx.engine()

 

Or

 

From ayx import Package

engine = Package.Engine

 


I am using this code:

from ayx import Alteryx
import pandas as pd
from openpyxl import load_workbook
import os
engine = Alteryx.get_engine()

# Get file paths from workflow variables
first_file = AlteryxEngine.WorkflowVariables["First One"]
second_file = AlteryxEngine.WorkflowVariables["Second One"]

# Define the sheet names to move
sheets_to_move = ["3E Load File", "Excel Format", "Detail"]

# Read the specified sheets from the first file
sheets_data = pd.read_excel(first_file, sheet_name=sheets_to_move, engine="openpyxl")


# Check if the second file exists
if os.path.exists(second_file):
# Load existing workbook
writer = pd.ExcelWriter(second_file, engine="openpyxl", mode="a",
if_sheet_exists="replace")
else:
# Create a new workbook
writer = pd.ExcelWriter(second_file, engine="openpyxl")

# Write each sheet to the second file
for sheet_name, df in sheets_data.items():
df.to_excel(writer, sheet_name=sheet_name, index=False)

# Save changes
writer.close()

 

Any Python whizzes see what change(s) I need to make?

3 REPLIES 3
kwilda
6 - Meteoroid

instead of trying to use the engine to get the variables (file names) read them into a dataframe:


import pandas as pd

import openpyxl

from ayx import Alteryx

 

# Read Alteryx columns

df_in = Alteryx.read("#1")

 

# Extract Excel file FullPath from the workflow thats in the dataframe now

first_file = df_in["First One"].iloc[0] # Get the first file path

second_file = df_in["Second One"].iloc[0] # Get the second file path

 

print(f"Source file: {first_file}")

print(f"Destination file: {second_file}")

 

from there you should be able to use the rest of your code

apathetichell
19 - Altair

@kwildais correct. the Alteryx Engine has no relevance here --- check out:

https://help.alteryx.com/current/en/designer/tools/developer/python-tool.html#idp382359

ppatane
8 - Asteroid

Doh!  Should've known that.  Grazie!

Labels
Top Solution Authors