# Excel

Speckle currently supports the following versions of Excel:

  • Excel on iPad
  • Excel 2016 or later on Mac
  • Excel 2013 or later on Windows
  • Excel on the web


The Speckle connector for Excel Connector is currently in early alpha, help us get to a stable release by reporting all the 🐛 you may find!

# Getting Started

# Installing

Our Excel connector is not distributed via the Speckle Manager.

Instead, you can get it from the Microsoft Office Store.

To install it:

  • Open Excel (for Desktop or Web)
  • Click on Insert > Office Add-Ins
  • Search for speckle and click Add

Alternatively, just visit https://appsource.microsoft.com/en-us/product/office/WA200002934 (opens new window).

After installing the connector, it should appear in Excel under the Home ribbon like so:

# Logging In

You'll need to log in to use this connector as it is unable to access your accounts from Speckle Manager. To do so, simply click on the log in button and insert your credentials.


Currently, only accounts on our XYZ server are supported, this is because of limitations on the Microsoft Office Store. We're currently working to add support for any Speckle server.

# Adding Streams

Just click the top left menu > Add stream > click on a stream to add to the document. The stream will be saved in the document and available whenever you return to it.

By default, streams are added as receivers but you can easily switch them to sender mode.

# Receiving Data

Receiving data in excel is quite different than in other connectors, and this is because we need to "flatten" it so to represent it in a table format. In general, a stream will either contain:

  • Simple values like numbers, text etc
  • Complex data structures (objects) like a Revit Wall or a Grasshopper Line. Objects are identified by a {} symbol.

The Excel connector works best when receiving lists of either simple values or objects of the same type. Lists are identified by a [] symbol.

Since a commit can contain a variety of data types, after clicking the receive button, you'll have the possibility to expand and select which data inside it to actually pull and write to your Excel file. You don't have to receive an entire commit each time!

# Simple Values

When receiving lists (or lists of lists AKA tables) of numbers or text, the data is received without transformations and the values are outputted by default in rows. Therefore, a single list will write data to a single row, a list of lists to multiple rows. If the incoming data has any further levels of nesting, it will be "string-ified".

# Objects

When receiving lists of objects they are flattened. This means that each object will become a new row and all its property values (and sub-property values) will become columns, their names will be the headers. Individual objects can be received too, and only one row will be created.


We recommend receiving lists of objects that have the same underlying data structure, i.e. only receiving objects of the same type.

Nested objects are flattened as well and their properties delimited by a period .. See the example below where 10 lines have been streamed from Dynamo to Excel:

# Complex Objects

When receiving complex objects (with more than 25 properties or sub-objects), you'll be presented with an additional dialog. This will let you filter which columns are to be received.

# Sending Data

Similarly to receiving, data can be sent a list of simple values or of objects.

# Simple values

Just select the range of data you want to send and click "Set range"

This is how it'll look in Speckle.

# Objects

To send objects, just replicate the structure of objects that you have previously received, then select "Set range with headers".

For instance, you could create 10 new lines with the data below:

# Advanced workflows


🚧 This section is under construction, we will add more documentation and examples on this soon! 🚧

More advanced workflows are possible, similarly to how our Grasshopper Schema Builder works, you can create BIM elements directly from Excel and update Revit elements too.

# Updating Revit Parameters

To update Revit paramteres from Excel, just copy paste the sample table below and update it with your element ids and values. We are working to make this flow simpler and more intuitive, it might change in the future

revitId parameters.0.name parameters.0.value parameters.0.revitUnit parameters.0.speckle_type parameters.0.applicationId speckle_type
198694 Top Offset 1000 autodesk.unit.unit:millimeters-1.0.1 Objects.BuiltElements.Revit.Parameter 1 Objects.BuiltElements.Revit.ParameterUpdater
198749 Top Offset 1000 autodesk.unit.unit:millimeters-1.0.1 Objects.BuiltElements.Revit.Parameter 2 Objects.BuiltElements.Revit.ParameterUpdater
234869 Bottom Offset 1000 autodesk.unit.unit:millimeters-1.0.1 Objects.BuiltElements.Revit.Parameter 3 Objects.BuiltElements.Revit.ParameterUpdater
418079 Comments Hello! autodesk.unit.unit:millimeters-1.0.1 Objects.BuiltElements.Revit.Parameter 4 Objects.BuiltElements.Revit.ParameterUpdater

Here's a breakdown of what each column means:

  • revitId the Revit ElementId or UniqueId
  • parameters.0.name the name or built-in name of the parameter to update. Eg Top Offset or WALL_TOP_OFFSET
  • parameters.0.value the value to set on the parameter
  • parameters.0.revitUnit the Revit unit of the parameter. If in Revit 2022 you must use the new ForgeTypeId (not sure where to find a list). If on earlier versions, any of these values (opens new window).
  • parameters.0.speckle_type always set to Objects.BuiltElements.Revit.Parameter
  • parameters.0.applicationId any values will do (we will remove this)
  • speckle_type always set to Objects.BuiltElements.Revit.ParameterUpdater

You can also update multiple parameters for each Revit element, to do so, just add more parameters.X columns.

# Support

For any feedback and support requests please visit our community forum (opens new window).