The CSV and spreadsheets steps turn a file into items and items into a file. A price list that arrives as an email attachment becomes one item per row; a week's orders become an XLSX file to email to the accounts team. Each one is its own step. No connection is needed.
Who can do this
Workspace Admins and Editors, on every plan.
The steps
| Step | What it does |
|---|---|
| Read a file into items | Turns a CSV, TSV or Excel file into one item per row, with the first row as the field names. |
| Write items to a file | Writes all the items to one CSV or Excel file, with the columns you choose. |
| Read a JSON or text file | Reads a JSON file into fields, or a text file into text. |
| Write a JSON or text file | Writes fields or text into a file — a .json or .txt file. |
Before you start
To read a file, an earlier step must bring it — a form's File field, Outlook · Get an attachment, or another step that gives a file. See Pass files between steps.
Steps
Read a file into items:
- Select + after the step that brings the file. In the step picker, open Utilities, select CSV and spreadsheets — No connection needed — then Read a file into items. Or search CSV.
- Under File, select Add a file and drag in the file from Data from earlier steps — A CSV, TSV or XLSX file from an earlier step. Up to 50,000 rows.
- For a workbook, type the Sheet name, such as Price list. Empty: the first sheet.
- Check The first row is headings (on by default). Off: the fields are column1, column2 and on.
- For a CSV or TSV, Separator is Detect unless you choose Comma, Semicolon, Tab or Pipe |. Encoding is UTF-8 unless you choose Windows-1252, ISO-8859-1 or UTF-16 — change it if accented letters come out wrong.
- Select Run this step. Output shows one item per row.
Write items to a file:
- Select + after the items to write. In the step picker, open Utilities, select CSV and spreadsheets, then Write items to a file.
- In Format, keep CSV or choose XLSX.
- Under Columns, select Add a field for each column, and fill in the column's heading and its value — Order and
{{ $json.order_no }}. Empty: every field, as it is named. - In File name, type the name — for example
northwind-orders. The.csvor.xlsxis added if you leave it off; with no name, the file isitems.csvoritems.xlsx. - Select Run this step. Output shows one item with the file and Download, ready to attach to an email or upload.
Read or write a JSON or text file:
- Read a JSON or text file — under File, drag in the file. Read it as is Detect (JSON for a file named
.json, text otherwise), JSON or Text. Choose the Encoding, and in Put the result in keepdataor type your own field name. - Write a JSON or text file — in Format, keep JSON or choose Text. In Content, put what to write, such as
{{ $json }}for the whole item. In File name, type the name, such asorder-NW-20417.json; with none, it isdata.jsonornotes.txt.
Output
Read a file into items gives one item per row, each field named by its column heading. A blank heading gives column1, column2 and so on by its place, and a heading used twice gives order_no and order_no_2. The item that brought the file is not kept on the rows.
Write items to a file gives one item, however many came in, with the file under file and rows, the number of rows written. Read a JSON or text file adds the contents to the item under data (or the field you named) — fields for JSON, text for a text file. Write a JSON or text file adds the file to the item under file. The item's other fields are kept by both.
Use a file in a later step by dragging it in from Data from earlier steps, or with {{ $json.file }}; {{ $json.file.name }}, {{ $json.file.size }} and {{ $json.file.mimeType }} give its details.
Good to know
- Up to 50,000 rows are read from one file. A longer file stops the step and says so, rather than leaving rows out quietly. Empty rows are skipped.
- XLSX only, for workbooks. An old Excel
.xlsfile or an OpenDocument.odsfile stops the step; save it as XLSX or CSV first. Any file that is not a workbook is read as text with a separator, so a file of the wrong kind gives rows of nonsense rather than an error — check the earlier step's Output if the columns look wrong. - Detect finds the separator from the first line: a tab for a
.tsvfile, otherwise whichever of comma, semicolon, tab or pipe the first line has most of. Quoted values, with commas or line breaks inside them, are read whole. - Values in a CSV arrive as text, numbers included. Use Set / Edit Fields to make them numbers. In a workbook, numbers arrive as numbers, true and false as true and false, and dates as ISO text —
2026-10-16, or2026-10-16T09:30:00with a time. An error cell arrives empty. - Write items to a file runs once for all the items that reach it, so 120 orders make one file of 120 rows. Without columns, every field any item has becomes a column, in the order they are first met.
- A CSV is written in UTF-8, with commas, so Excel opens accented letters correctly. An XLSX file has one sheet, Items, with the headings in bold; numbers and true/false keep their type. A list or object in a value is written as JSON text.
- Read a file into items and the JSON and text steps run once per item. With two items that each bring a file, the rows of both come out one after the other. Each step reads one file: the first in File.
- A file you write is kept with the run, like any file passed between steps.
If something goes wrong
| What the run says | Why | What to do |
|---|---|---|
| The file has more than 50,000 rows; one step reads up to 50,000. Split the file first. (or … has more than 50,000 rows; … for a workbook) | The file is over the cap. | Split it before it reaches Bizomate, or filter it at the source. |
| … has no sheet called “…”. Its sheets: …. | Sheet names a sheet the workbook does not have — it was renamed, say. | Type one of the sheet names the message lists, or leave Sheet empty for the first. |
| … is an OpenDocument spreadsheet, which this step can't read. Save it as XLSX or CSV first. | The file is an .ods file. |
Save it as XLSX or CSV. |
| … is an old Excel file (.xls). Save it as XLSX or CSV first. | The file is in Excel's format from before 2007. | Save it as XLSX or CSV. |
| … can't be read as a spreadsheet: … | The file is named .xlsx but is damaged, or is not really a workbook. |
Open it in Excel and save it again. |
| … is not JSON: … | Read a JSON or text file read the file as JSON, and it is not. | Choose Text in Read it as, or check the file. |
| Content is not JSON. Give an object or a list from an earlier step, or choose Text. | Write a JSON or text file with JSON got text that is not JSON. | Put an object or list in Content, such as {{ $json }}, or choose Text. |
| File is empty. Choose a file from an earlier step. | File has no file. | Drag in a file from Data from earlier steps. |
| Attachment 1 is not a file when the step ran — … may not have brought one. | The value in File was not a file in that run. | Check the earlier step gave a file. |