Speckle Excel connector slow?


I was playing around with the Excel connector and created a list in Grasshopper.
Receiving that in Excel takes about 4 long minutes for about 450 rows with 4 columns each.
Is that the expected performance or is there something wrong with my setup?


That’s definitely not the expected behavior!
Any chance you can share a sample stream for us to debug?

I created a test stream here: Speckle (for some reason I can´t access speckle.xyz with my speckle connector, but the data should be the same as in the example from yesterday)

A few things I noticed:

  • If I use ‘Receive last selection’ it only takes a few seconds

  • If I receive the root object it also only takes a few seconds

  • I want my data to come through properly formatted though (which it doesn´t if I receive the root object)

  • Thus I had to ‘rewire’ my speckle objects in GH…

  • and select the child of the root object (the list with 455 elements, see above) to get it into excel properly, which takes now only 2 long minutes not being behind a vpn today…


another question related to the Excel connector. I have the following workflow:

  1. Creating a custom Speckle objects in Grasshopper
  2. Receiving that stream in Excel
  3. Altering some of the data
  4. Sending it back from Excel
  5. Receiving the altered stream in Grasshopper

Unfortunately step 5 fails with the error “Input object is not a Speckle object, nor can it be converted to one.”

Should that normally work?

Would it be possible to share with us the stream and excel sheet?

This should be supported but there may be some extra documenting needed on our side to clarify some things :wink:


I can´t create a “real” stream because somehow my Excel connector doesn´t work with speckle.xyz…

I attached a .gh script to showcase how I create the initial stream and a Excel sheet to illustrate how it looks received in Excel.

fake data from attached script: Speckle
real data (can´t share the script): Speckle

speckle.xlsx (19.0 KB)
excel.gh (8.8 KB)

Hey @tlmn ,

I Just debugged the slowness issue, it seems to be because each element is detached and that’s causing an extra API call. As a matter of fact, 455 * 0.15-0.3 sec results in approx 2 min.
Can you disable detaching on your source elements and try again?

I’ll also ping @dimitrie to see if it’s normal that the object loader takes so long to retrieve such simple objects. Ofc, the calls could be parallelized as well…

Load last received works much faster as it’s pulling some cached data :slight_smile:

Normal receive:

Receive last selection:

1 Like

Ok, for everyone else eventually reading this thread: setting ‘range with headers’ in Excel did the trick (pretty obvious actually), now receiving in Grasshopper works like a charm :blush:


Some more feedback on the Excel connector… :wink:

Can we make the connector remember the stream & branch of each individual sheet?

If you send to multiple branches in the same book, you most certainly end up sending to the wrong branches since it seems to pick the last used one (of a different sheet eventually).


Do you mean saving the stream cards per sheet instead of per workbook?

It can probably be done!

Do you mean saving the stream cards per sheet instead of per workbook?

Yes, exactly!


Good idea, tracked it here: Save streams per worksheet not workbook · Issue #39 · specklesystems/speckle-excel · GitHub


Hey @tlmn ,

Good news! @connor and @gjedlicska have improved the receive logic and made the connector much faster; an update will come very soon!