# Import CSV, JSON or Excel into a table

> Bring rows from a .csv, .json, .xls or .xlsx file into a table, map each file column, and update matching rows or add everything as new.

Source: https://plexiidesk.com/help/widget-table-import
Section: Widgets > Numbers and data
Plans: All plans
Updated: 2026-10-10

You can bring rows into any table from a file: a CSV, an Excel workbook (.xls or .xlsx) or a JSON list. Before anything changes, you choose where each column of the file goes and whether rows that match ones already in the table are updated or added as new.

## Before you start

- Importing works the same on every plan.
- You need a Table widget to import into. To start a new table from a file, add a Table widget first (click **Add widget** in the header, then **Numbers & data** > **Table**) and import into it. See [Table widget](https://plexiidesk.com/help/widget-table).
- PlexiDesk reads these files:

| File | How it is read |
| --- | --- |
| **.csv** | The first row holds the column names; each row after it is a row of the table. |
| **.xls**, **.xlsx** | The first sheet of the workbook, read the same way as a CSV. |
| **.json** | A list of objects. Each object is a row, and its keys are the column names. |

Empty lines are ignored, and a column with no name in the file is called **Column 1**, **Column 2** and so on. A JSON file looks like this:

```
[
  { "Item": "Walking boots", "Category": "Clothing", "Packed": "yes" },
  { "Item": "Water bottle", "Category": "Kit", "Packed": "no" }
]
```

## Import a file

1. Right-click the table's title bar and choose **Import CSV, JSON or Excel…**.
2. Choose your file and click **Open**.
3. The **Import into table** window opens. At the top it shows the file's name and how many rows and columns it has.
4. Under **Map columns**, check where each column of the file goes. See "Map columns" below.
5. Under **Match rows on**, choose whether rows update or are all added. See "Update matching rows or add everything" below.
6. Read the summary at the bottom of the window, for example **12 to add, 3 to update, 2 new columns**.
7. Click **Import** and the number of rows, for example **Import 15 rows**.

The button says **Importing…** while it works, and the window closes when the rows are in. To stop without importing anything, click **Cancel**, click the **×**, or click outside the window.



## Map columns

Each column of the file has a box beside it. Choose one of these:

- **An existing column**, listed under **Existing column**: the file's values go into that column.
- **Create new column**: adds a column named after the file's column. A second box appears for its type: **Short text**, **Long text**, **Number**, **Checkbox** or **Date**.
- **Skip this column**: leaves that column of the file out.

PlexiDesk fills in a starting choice for you. A file column with the same name as a table column goes into that column (capital letters do not matter). Every other file column is set to **Create new column**, with a type suggested from the first rows of the file: **Number** when every value is a number, **Checkbox** when every value is true, false, yes or no, **Date** when every value is a date, **Long text** when some values are long, and **Short text** otherwise.

### How values fit each type of column

| Column type | What it takes from the file |
| --- | --- |
| **Short text**, **Long text**, **Rich text** | Any text. |
| **Number** | Numbers. Anything else leaves the cell empty. |
| **Checkbox** | Ticked for true, yes, y, 1, ✓, done or checked, in any capitals. Unticked for anything else. |
| **Date** | Dates. Year-month-day, such as 2026-11-30, is the safest way to write them. |
| **Single select** | A value that matches one of the column's options by name. Anything else leaves the cell empty. |
| **Multi-select** | Option names separated by commas, such as "Design, Copy". Names that match none of the column's options are left out. |
| **Attachment**, **Related records**, **Office file** | These cannot be filled from a file. Choose **Skip this column** for them. |

> **Tip:**
> Importing into a Single select column? Add its options first, named exactly as they appear in the file. Values then land in the right lanes and groups. See [Table columns and field types](https://plexiidesk.com/help/widget-table-columns).

## Update matching rows or add everything

**Match rows on** decides what happens to rows that are already in the table.

- **Append all as new rows**: every row of the file is added to the table.
- **A column**, such as an order number or an email address: a file row whose value in that column matches a row already in the table updates that row. Every other file row is added. The window reminds you: "rows with a matching value update in place; the rest are added".

PlexiDesk starts with the first file column that maps to an existing column, or with **Append all as new rows** if none does. Matching ignores capital letters and spaces at either end of a value.

A few things to know:

- When a row is updated, every mapped column takes the value from the file, including empty values. To leave a table column as it is, set its file column to **Skip this column**.
- If the same value appears twice in the file's match column, those rows are combined into one, and the later row's values win.
- File rows with an empty value in the match column are added as new rows.
- Matching on a column you are creating in this import adds every row, because the table has nothing in that column yet. New columns are labelled **(new)** in the list.

## The summary line

The line at the bottom of the window tells you what will happen:

- **to add**: rows that will be added to the bottom of the table.
- **to update**: rows already in the table that will be updated.
- **new columns**: columns that will be created.
- **empty skipped**: rows of the file with nothing in any of the columns you are importing. They are left out.

If there is nothing to import, the **Import** button is greyed out.

## After you import

- New rows appear at the bottom of the table, and new columns at its right end.
- The rows an import added come off together in one step: click an empty part of the desk and press `⌘` `Z` on a Mac or `Ctrl` `Z` on Windows. Undo does not restore values the import updated, and any new columns stay, so check your mapping before you import into rows you already have. See [Undo and redo](https://plexiidesk.com/help/undo-redo).
- To remove a column the import created, right-click its header and choose **Delete column**.

## If the file will not import

If PlexiDesk cannot use the file, a message appears across the top of the table instead of the window:

| Message | What to do |
| --- | --- |
| **No columns found in that file.** | The file is empty. Check you picked the right file. |
| **To import as table rows the JSON must be an array of objects.** | The JSON must be a list in square brackets of objects in curly brackets, as in the example above. |
| **No objects found in the JSON array.** | The list in the JSON file has no objects in it. |
| **The spreadsheet has no sheets.** | Open the workbook in your spreadsheet app and check it has a sheet with data. |

## Other kinds of files

- **Word documents**: add a Document widget, which can import a Word .docx file. See [Document widget](https://plexiidesk.com/help/widget-document).
- **Spreadsheets you want to work on with formulas**: add a Spreadsheet widget instead. It can import an Excel .xlsx or a .csv file. See [Spreadsheet widget](https://plexiidesk.com/help/widget-spreadsheet).
- **Taking rows out of a table**: select cells in the Table view and press `⌘` `C` on a Mac or `Ctrl` `C` on Windows. They paste into a spreadsheet as rows and columns. See [Move around a table and copy cells](https://plexiidesk.com/help/widget-table-keyboard).

## Related tasks

- [Table columns and field types](https://plexiidesk.com/help/widget-table-columns)
- [Build a table with AI](https://plexiidesk.com/help/widget-table-ai)
- [Move around a table and copy cells](https://plexiidesk.com/help/widget-table-keyboard)
- [Six views of every table](https://plexiidesk.com/help/table-views)
- [Table widget](https://plexiidesk.com/help/widget-table)
- More about this widget
