Skip to main content

I have FeatureReader transformers within my workspace that are configured to read features from an Excel file.

 

The name and path of the Excel file are variables provided by parameter values, but the Excel sheet name is always the same. The schema of the file is likely to vary every time the workspace is run.

 

I'm really struggling to get any features to read in, and am a bit unsure of where I'm going wrong. From similar posts in the past (eg; https://community.safe.com/s/question/0D54Q000080hdRJSAY/how-to-expose-attributes-from-featurereader-if-feature-type-is-dynamic) it seems that what I'm trying to do potentially isn't possible without scripting something bespoke in a PythonCaller, but it really seems like something that FME should be able to do.

 

Does anyone have any advice or a working methodology for this sort of problem? Thanks in advance

What are you trying to do with the features once they've been read?

 

 


What works for me is to use the Generic reader. You will get column names like col1, col2, col3 etc. but you can restore the original column names using AttributeExploder, AttributeCreator, Aggregator.


Thanks for the responses.

@ebygomm​  - I'm just trying to expose all the attributes and values from the file so that I can then join them to another set of data using a unique ID which is present in both datasets. I then need to write out the combined data to an Excel sheet. The writing aspect I have sorted and working using a dynamic writer, but the reading aspect I'm struggling with.

@nielsgerrits​ - I've tried using the generic reader, but seem to be having no luck. All I get returned is a column called <no schema>. I suspect I might have to try a PythonCaller methodology instead


@mattbooker2

Did you find a solution?

I a similar problem and it feels like it should work. If I hardcode the path it works great. I have a scripted user parameter with a path as output, using the paramter as input or through an attribute as input just does not work.

I might try a PythonCaller instead so checking if you made it work.

 


Reply