All nodes/Data/DataFrame I/O

Write XLSX

Writes a DataFrame to an Excel file (xlsx) in the workspace's file store (or a connected one). Overwrites the target file if it exists.

Write XLSX▶
TableOutcome
File storeError
File

Type in the graph: df_write_xlsx

Exec

An error output can be enabled to handle failures on their own path.

Ports can be split into separate execution and data handles.

Try it

Minimal working scenario

Entry
Write XLSX▶
Exit▶
  • Execute + Data
Press “Copy nodes”, open the editor and hit Ctrl+V on the canvas.

Runs as pasted

When to use it

Saves a table as an Excel workbook. The store and path mechanics are the same as in Write CSV; what differs is who receives the file.

Pick XLSX when a person will open it: numbers stay numbers and dates stay dates, and there are no encoding or delimiter questions at all — the format has none. CSV is still the better choice when another system reads the file, or when it is very large: xlsx is heavier and slower to build.

How it works

The “Table” port carries both the trigger and the data — there is no separate execution input. As with the CSV writer, a list of objects or CSV text is accepted too: the node coerces it into a table itself.

“Sheet name” is a template; a blank value becomes Sheet1. The workbook is built from scratch every time, so it holds exactly one sheet.

The path is a template as well: reports/{{ variables.session_id }}.xlsx gives one workbook per session. The output is path, bytes_written and rows_written (data rows, header excluded).

Common mistakes

  • Expecting a sheet to be added to an existing workbook. The file at that path is replaced whole: old sheets, formulas and formatting disappear. To keep history, write each run to its own path.
  • Counting on formatting. The node writes data: column widths, styles, frozen headers and formulas are not configurable. If a branded look is required, prepare a template workbook outside Iterna.
  • The WebDAV folder does not exist. The workspace store creates missing directories itself; on WebDAV a write into a non-existent folder fails.
  • One table across several sheets. A single DataFrame cannot be spread over sheets. Split the data earlier in the graph and write separate files, or assemble the report as CSV.
  • An empty table. You get a workbook with the header alone and rows_written: 0 — a successful run, not an error.

Inputs

PortWirePayloadNotes
TabledfExecute + Dataexecute_datadataframe
File storefile_storeDatadata—

shown when connection_source ≠ "auto"

Outputs

PortWirePayloadNotes
OutcomeoutputExecute + Dataexecute_dataobject
Erroron_errorExecute + Dataexecute_data—

shown when expose_error_output = true

FilefileDatadatafile

Configuration

FieldTypeDefaultDescription
File pathpathstring""

Path relative to the store root. Templates in {{ }} are rendered per run, so ``reports/{{ variables.session_id }}.xlsx`` writes one file per session.

supports templates

Sheet namesheet_namestringSheet1

Name of the worksheet to create. Supports templates.

supports templates

Include header rowinclude_headerbooleantrue

Write the column names as the first row.

Connection sourceconnection_sourcestringauto

Where this node gets its connection. 'From the run context' uses what the platform already knows (the Telegram bot this workflow is deployed to / this workspace's own file store) and needs no wiring. 'External connection' shows the resource port so a config node can be wired into it.

Options: auto — From the run context, external — External connection (wire a config node)

Subfolderstore_subfolderstring""

Optional folder inside this workspace's store to treat as the root, e.g. `reports` or `sessions/{{ variables.session_id }}`. Blank = the store root.

supports templates

shown when «Connection source» = From the run context

Advanced
Max bytesmax_bytesinteger52428800

Refuse to write more than this many bytes.

Shared fields

Every node has these three — the platform adds them, not the node author.

  • expose_error_output — When enabled, show an execution output to connect nodes that run if this step fails.
  • split_ports_in — Show separate execution and data input handles instead of one combined port.
  • split_ports_out — Show separate execution and data output handles instead of one combined port.