Archi-lab.net in Revit 2026

Hi everyone,

We are trying to use a simple Dynamo script to import data from Excel to a key schedule for the door hardware schedule in Revit 2026 with Dynamo v.3.6.1. As you can see in the Image 1, the data can be read from the Excel but cannot be imported to the schedule w/ the node Key Schedule under Archi-lab.net. I did ask the Gemini to diagnose the script that used to work in Revit 2023, and it suggested me to install the Archi-lab.net version corresponding to Revit 2026 / Dynamo 3.x.

But in the Dyanomo package manager, the latest version does not support Revit 2026 as shown in Image 2. We tested the script in Revit 2023, and it worked successfully. Since the Archi-lab.net package is widely used, I’m looking for support to fix this version issue. Is it related to the IronPython2 or 3? Thank you!

The archilab key schedule node has been deprecated as far as I know
I have looked at Konrad’s original code and done a version
Please note - this will overwrite the key schedule

import clr

clr.AddReference("RevitServices")
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager

clr.AddReference("RevitAPI")
from Autodesk.Revit.DB import FilteredElementCollector, SectionType, StorageType

doc = DocumentManager.Instance.CurrentDBDocument

key_schedule = UnwrapElement(IN[0])
fields = IN[1]
data = IN[2]

# Checks
assert hasattr(key_schedule, "Definition") and key_schedule.Definition.IsKeySchedule, (
    "Schedule View is not a key schedule"
)
assert all(isinstance(item, list) for item in data), "Data must be a list of lists"
assert all(len(item) == len(fields) for item in data), (
    "All rows in data must have the same number of elements as fields"
)

# Conform table to the number of rows in the data
row_count = len(data)

table_data = key_schedule.GetTableData()
section_data = table_data.GetSectionData(SectionType.Body)
number_of_rows = section_data.NumberOfRows - 2  # Exclude header and title rows

TransactionManager.Instance.EnsureInTransaction(doc)

if number_of_rows < row_count:
    for _ in range(number_of_rows, row_count):
        section_data.InsertRow(0)

elif number_of_rows > row_count:
    for i in range(number_of_rows, row_count, -1):
        section_data.RemoveRow(i - 1)

row_elements = sorted(
    FilteredElementCollector(doc, key_schedule.Id), key=lambda x: int(x.Name)
)

for row, values in zip(row_elements, data):
    for field, value in zip(fields, values):
        field_param = row.LookupParameter(field)
        if field_param and field_param.StorageType == StorageType.String:  # String
            field_param.Set(value.replace("\n", "\r\n"))
        elif field_param:  # Numeric
            field_param.Set(value)

TransactionManager.Instance.TransactionTaskDone()

OUT = key_schedule

Hi Mike, thank you so much for your support! May I know if you still have the Archi-lab.net package installed in your Dynamo? The node Data.OpenXMLImportExcel worked only after I uninstalled the package. How can we fix this issue? Thanks again!

Hi Mike, here is the update. I did paste your code into Python script, and I got an error warning saying “AttributeError : ‘NoneType’ object has no attribute ‘replace’ [’ File “”, line 52, in \n’]?”. I uploaded the whole dynamo script & the warning to Gemini & Calude for diagnosis, but the code they suggested to add to fix did not work…

Your spreadsheet has blank cells
Update the code like this

for row, values in zip(row_elements, data):
    for field, value in zip(fields, values):
        field_param = row.LookupParameter(field)
        if field_param and field_param.StorageType == StorageType.String:  # String
            if not isinstance(value, str):
                value = ""
            field_param.Set(value.replace("\n", "\r\n"))
        elif field_param:  # Numeric
            field_param.Set(value)

I have just come upon the fact that the Key Schedule node is no longer a part of archi-lab for revit 2026. I tried the python code above and it did not work. Are there other nodes that i can use to create the key schedule? Attached is a photo of my script…

Just wanted to chime in regarding archilab support and versioning:

You haven’t provided a value for the _upperCase input. Assume this is true/false? It’s a bit hard to see how the data is meshing without pinned dropdowns