Add Rows to an Excel Worksheet in n8n
Add Rows is a PDF4me node action in n8n that writes JSON records into an Excel worksheet. Use it to push API results into a report, log webhook payloads to a shared workbook, or append CRM exports to a tracking sheet, with numbers and dates landing as real Excel values rather than text.
What this node does
PDF4me Excel: Add Rows takes an existing .xlsx workbook plus a JSON array in JSON Row Data, and writes one row per object. It has two placement modes: name a table in Target Excel Table and keys are matched to headers, or leave it blank and Insert From Row plus Insert From Column set the exact starting cell. It edits a workbook you supply rather than creating one from scratch.
Authenticating Your API Request
Every PDF4me node in n8n requires a valid Credential to connect with. Create or select one that holds your PDF4me API key so the workflow can authenticate spreadsheet requests securely.
Important Facts You Should Not Miss

JSON Row Data holds a JSON array of flat objects. Target Excel Table is empty here, so Insert From Row and Insert From Column place the data at cell A1.
Table Mode vs Coordinate Mode
| Question | Table mode | Coordinate mode |
|---|---|---|
| How you switch to it | Name a table in Target Excel Table | Leave Target Excel Table blank |
| How columns are matched | JSON keys matched against table headers | Values written in key order from the start cell |
| Does column order matter | No, headers drive placement | Yes, position drives placement |
| Which fields control it | Target Excel Table and Excel Row Number | Insert From Row and Insert From Column |
| Best for | Structured sheets that already have a table | Blank sheets or a fixed reporting layout |
| Overwrite risk | Lower, rows follow the table structure | Higher, the start cell is written to directly |
What Parameters Does Add Rows Need?
| Parameter | Required | What it does | Example |
|---|---|---|---|
| Credential to connect with | Required | The PDF4me API credential the node authenticates with. | PDF4me API |
| Operation | Required | The action this node performs. Select Add Rows. | Add Rows |
| Excel File Input Method | Required | How the workbook reaches the node: from the previous node as binary data, as a Base64 string, or from a URL. | From Previous Node (Binary Data) |
| Binary Data Property Name | Conditional | Name of the binary property holding the .xlsx. Appears when the workbook comes from the previous node. | data |
| Worksheet Name | Required | Sheet the rows are written to. Match the sheet tab name exactly. | Sheet1 |
| JSON Row Data | Required | JSON array of flat objects. Each object becomes one row and each key maps to a column. | [{"Date":"2024-01-15","Amount":1500.00}] |
| Insert From Row | Conditional | Row number the data starts at, counting from 1. Used in coordinate mode when no table is named. | 1 |
| Insert From Column | Conditional | Column number the data starts at, counting from 1 for column A. Used in coordinate mode. | 1 |
| Target Excel Table | Optional | Name of an existing table to write into. Filling this in switches the node to header matching instead of coordinates. | Table1 |
| Excel Row Number | Conditional | Row index inside the named table where insertion begins. Used in table mode. | 1 |
| Convert Numeric and Date Values | Optional | Toggle that turns numeric and date strings into real Excel values rather than text. Ships enabled. | enabled |
| Date Format Pattern | Optional | Pattern applied to converted dates. Match it to the shape of the dates in your JSON. | yyyy-MM-dd |
| Numeric Format Pattern | Optional | Format applied to converted numbers, such as two decimal places. | N2 |
| Skip JSON Property Names | Optional | Toggle that omits the JSON keys, writing only values. Ships disabled so headers are included. | disabled |
| Skip Null Values | Optional | Toggle that leaves cells untouched where a JSON value is null instead of clearing them. Ships disabled. | disabled |
| Culture and Language Settings | Optional | Culture code used when parsing numbers and dates, which decides separator handling. | en-US |
| Output File Name | Optional | Filename of the returned workbook. Keep a valid Excel extension. | excel_with_rows.xlsx |
Output
| Field | Type | What it contains |
|---|---|---|
| fileName | String | Name of the returned workbook after the rows were written. |
| fileSize | Number | Size of the returned workbook in bytes. |
| success | Boolean | Whether the insertion completed. Branch on this so failures surface as alerts. |
| originalFileName | String | Name of the input workbook as supplied to the node. |
| worksheetName | String | The worksheet the rows were written to. |
| rowsAdded | Number | How many rows were inserted. The most useful verification signal the node returns. |
| insertFromRow | Number | Starting row used, echoed back when running in coordinate mode. |
| insertFromColumn | Number | Starting column used, echoed back when running in coordinate mode. |
| tableName | String | The table written into, or null when coordinate mode was used. |
| excelRowNumber | Number | Row index inside the table where insertion began, in table mode. |
| convertNumericAndDate | Boolean | Whether numeric and date conversion was applied. |
| dateFormat | String | The date pattern applied during conversion. |
| numericFormat | String | The numeric format applied during conversion. |
| cultureName | String | The culture code used to parse numbers and dates. |
| message | String | Human-readable summary, including the row count and worksheet name. |
The updated workbook itself is returned as binary data, ready to write to storage, attach to an email, or pass into a further Excel step.
How Do I Set Up Add Rows in n8n?
- Add the PDF4me Excel node to your workflow and set Operation to Add Rows.
- Select your PDF4me credential, or create one and paste your API key.
- Pick an Excel File Input Method and supply the workbook through the field that appears beneath it.
- Set Worksheet Name to the exact sheet tab you are writing to.
- Put a JSON array of flat objects into JSON Row Data, one object per row.
- To use table mode, enter the table name in Target Excel Table and set Excel Row Number. To use coordinates, leave the table blank and set Insert From Row and Insert From Column.
- Leave Convert Numeric and Date Values enabled, then set Date Format Pattern, Numeric Format Pattern, and Culture and Language Settings to match your data.
- Set Output File Name, execute the node, and check
rowsAddedin the response before routing the workbook onward.
Typical Setups
Workflow ExamplesCommon n8n workflow patterns using Add Rows.
- A webhook receives a form submission as JSON.
- Add Rows appends it to a named table in a shared workbook.
- The team reads the sheet without anyone re-keying the data.
- A scheduled HTTP request pulls records from an internal API.
- A Code node flattens the response into a plain array.
- Add Rows writes it into the reporting template at fixed coordinates.
- A nightly job fetches new opportunities as JSON.
- Table mode matches the keys to the existing headers.
- Column order changes in the source do not break the sheet.
- Add Rows returns rowsAdded alongside the workbook.
- An IF node compares it to the length of the input array.
- A mismatch raises an alert instead of shipping a short report.
Practical Tips
Cheat Sheet
| Field | Value |
|---|---|
| Operation | Add Rows |
| Excel File Input Method | From Previous Node (Binary Data) |
| Binary Data Property Name | data |
| Worksheet Name | Sheet1 |
| JSON Row Data | [{"Date":"2024-01-15","Amount":1500.00}] |
| Insert From Row / Column | 1 / 1 |
| Target Excel Table | Table1 |
| Excel Row Number | 1 |
| Convert Numeric and Date Values | enabled |
| Date Format Pattern | yyyy-MM-dd |
| Numeric Format Pattern | N2 |
| Culture and Language Settings | en-US |
| Output File Name | excel_with_rows.xlsx |