Excel-Dynamo-Revit Direct Auto-Populate Workflow

Greetings everyone.

I am new to Dynamo and have been exploring the many possibilities and uses it may serve to help improve workflows within our office.

We deal with a lot of consultants, contractors, clients, and even internal teams, that utilize Excel spreadsheets to create schedules (door, window, furniture, finish, etc.) rather than Revit itself. Sometimes they don’t have Revit at their disposal, or are not comfortable using parameters, or navigating the interface.

What I am trying to do is create a direct link between the excel spreadsheet categories and the family parameters associated with those categories. This is more for internal office use and dealing with our interior design team, who have premade excel spreadsheet templates with a specific title block, keys/legends, additional information, already in the spreadsheet.

Example (apologies I cannot upload any of my files, i.e. excel spreadsheet, dynamo graph, or revit project, at the moment since I am a new user)

Our ID team has created a master finish Excel spreadsheet which contains finishes for walls, floors, ceilings, joinery (millwork), base, glass manifestation.

The categories in the Excel (Associated Revit Parameter) are as follows.

0 - Item (Material: Mark)
1- Location (Material: Location)
2- Product (Material: Product)
3- Manufacturer (Material: Manufacturer)
4- Size (Material: Size)
5- Product Range/Description/Color (Material: Description)
6- Product Code (Material: Product Code)
7- NBS (Material: NBS)
8- Comments (Material: Comments)

My main question in terms of Dynamo is how do I create a link between the Excel cells and the Material parameters I have set up in Revit?

Below is a breakdown of the Dynamo process I have been creating. (Apologies again, I will upload a Dynamo graph when I am granted access to uploading)

1.) Excel Read From File
File Path - File.FromPath - Excel Read From File
String (Finishes Schedule) - Sheet Name

2.) Excel Read From File - List Transpose

3.) List Transpose - List.GetItemAtIndex (I have separated each Excel column into its own list by defining each index)

4.) Not sure if this is a necessary step or a better way, but the information I want to take from Excel starts at cell A17 so I removed the cells before and after the information I want.
List.GetItemAtIndex - List.RemoveItemAtIndex
Range = 0-16
I then only wanted the first 5 items so I removed all after.
List.GetItemAtIndex - List.RemoveItemAtIndex
Range = 6-182

5.) ListRemoveItemAtIndex - Element.SetParameterByName
Specified the Parameters I want to populate with the itemized lists I have defined.

6.) This is where I am stuck.

I have set up the nodes to recognize the Materials Category in Revit as below.
Categories (Materials) - All Elements of Category - Element.Name-Material.By.Name and connected to the above node Element.SetParameterByName.

The issue is when I run the Dynamo Graph, Revit is populated with new Materials, creating duplicates, instead of autopopulating the ones I have already created in Revit.

If I can get this workflow to run how I am intending to use it, and if it is even possible, this would go along way for our office.

Thank you for your time reading the above and for any help.


Are there some materials that need to be created and some that already exist? I don’t remember if you can get a material by name or not but you would do that if possible. Otherwise you would start by getting a list of all your materials and filtering for the ones you pulled from Excel. If the names don’t match exactly you’ll have to create a dictionary with the Revit materials and the name you use in Excel.