Skip to main content

Excel

📊

Excel

Read spreadsheet rows into structured JSON

The Excel node reads a worksheet from an .xlsx or .xls file and converts each row into a JSON object keyed by the header row. It resolves the file either from the Automation Hub file store or from an artifact storage path, and can filter rows before returning them so downstream steps receive only the data they need.

Common uses include:

  • Loading reference data from an uploaded spreadsheet into a workflow.
  • Filtering rows by column value before processing (for example, only status = active).
  • Turning a report export into a JSON array for iteration or lookups.
  • Feeding spreadsheet rows into a downstream API, database, or comparison step.

Before You Start​

What you may needWhere to set it upWhy it matters
The Excel file to readFilesUpload the workbook to the file store and reference it by fileId.
Common sheet names or filter valuesGlobal VariablesKeep repeated sheet names and filter values consistent across workflows.

Actions​

ActionDescription
excel:readToJsonArrayRead a worksheet and return its rows as a JSON array

excel:readToJsonArray​

Reads a single worksheet and returns each data row as an object. The header row supplies the object keys; every row below it becomes one object in the output array. When a filter is configured, only rows that satisfy the filter criteria are returned.

All configuration lives under the excelReadDetails root. Filters may be supplied under excelReadDetails.filters (or an optional top-level filters block).

Parameters

ParameterTypeRequiredDefaultDescription
fileSourcestringYes--Where to load the file from: FILE_STORE or STORAGE_PATH
fileIdstringIf fileSource is FILE_STORE--Identifier of the file in the Automation Hub file store
filePathstringIf fileSource is STORAGE_PATH--Artifact storage path of the workbook
sheetNamestringNofirst sheetName of the worksheet to read. When omitted, the first sheet is used
headerRowIndexintegerNo0Zero-based index of the header row that supplies the object keys
filterOperatorstringNoNONEHow to combine filter criteria. NONE disables filtering and returns all rows
filters[].fieldNamestringPer filter--Column name the filter applies to
filters[].operatorstringPer filter--Comparison operator for the criterion
filters[].fieldValuestringPer filter--Value to compare the column against

Example: Read active customers from an uploaded workbook

FieldValue
fileSourceFILE_STORE
fileIdcust-2026-q3
sheetNameCustomers
headerRowIndex0
filterOperatorAND
filters[0]fieldName: status, operator: equals, fieldValue: active

What happens:

  1. The node loads the workbook cust-2026-q3 from the file store.
  2. It opens the Customers sheet and reads row 0 as the header.
  3. Each remaining row is converted into an object keyed by the header cells.
  4. Rows where status equals active are kept; the rest are dropped.
  5. The filtered rows are returned as the data array for later steps.

Output​

The action returns a result object with the following fields:

FieldTypeDescription
statusstringsuccess when the sheet is read without error
rowCountintegerNumber of rows returned after any filtering
dataarrayArray of row objects, each keyed by the header row cells

Example output:

{
"status": "success",
"rowCount": 2,
"data": [
{"id": "1001", "name": "Acme Corp", "status": "active"},
{"id": "1002", "name": "Globex", "status": "active"}
]
}

Common Error Scenarios​

ErrorLikely CauseWhat to Check
Missing excelReadDetailsThe configuration root is absent from the stepEnsure the step config contains an excelReadDetails block
fileSource requiredNo file source was providedSet fileSource to FILE_STORE or STORAGE_PATH
fileId / filePath missingThe identifier for the chosen source is not setProvide fileId for FILE_STORE, or filePath for STORAGE_PATH
FILE_ERRORThe workbook is empty or could not be loadedConfirm the file exists, is a valid .xlsx/.xls, and is not empty
EXCEL_READ_ERRORThe sheet or header row could not be parsedCheck that sheetName exists and headerRowIndex points at a real header row

Best Practices​

  • Pin the header row. Set headerRowIndex explicitly when the sheet has title or banner rows above the real header, so the object keys are correct.
  • Name the sheet. Provide sheetName rather than relying on the first sheet, so the step keeps working if the workbook is reordered.
  • Filter early. Use filters to drop unwanted rows in the node rather than filtering later, reducing the data downstream steps must process.
  • Keep filter values in variables. Store repeated filter values in Global Variables so they are easy to update.
  • Validate the source. Match fileSource to how the file actually arrives — FILE_STORE for uploaded files, STORAGE_PATH for artifacts produced by earlier steps.