# Import from Excel or a CSV file

Teamhood imports a CSV or TXT file of up to 10 MB, one item per row. It cannot read an `.xlsx` file, so save the sheet as CSV first.

## Save the sheet as CSV

1. In Excel, open the sheet you want to import. A CSV file holds one sheet.
2. Delete any total row. The import makes an item of every row, so a total row would become an item or a failed row.
3. Choose **File** → **Save As**, and set the file type to **CSV UTF-8 (Comma delimited) (\*.csv)**.

## Import the file

1. Select **+** at the top of the sidebar, then **Import**.
2. Drop the file, or select the drop area to pick it.
3. Check the **Preview**. If the columns or dates look wrong, change **Delimiter**, **Decimal** or **Date format**.
4. On **Placement**, choose where the items go in **Place under**, and their type in **Items become**.
5. On **Map fields**, map one column to **Title**. A column with the same name as a field is mapped to that field. A button such as **Create 3 fields** makes a text, number, date or select field for each column left on **Ignore this column**. For a column of names, open the column's list and pick a people field, or choose **Create field as People**.
6. Check the counts on **Review**, then select the import button, such as **Import 120 items**.

**Open imported items** opens a new list view of the imported items.

## How values are read

- Dates: the import detects the format from the file. Some dates fit both orders, such as 04/07/2025. When every date fits both, your organization's date format decides, unless it starts with the year. Then pick the format under **Date format**.
- People: a name matches a person or a team by name, never by email.
- Options: a select value the field does not have yet becomes a new option for the imported type.
- Parent: a **Parent** cell names another row of the file, by the value in an `ID` column first, then by title.
- Dependencies: each entry is `row`, `row:type`, `row:lag` or `row:type:lag`. The type is `FS`, `SS`, `FF` or `SF`, and lag is in whole working days.

> **Names written as "Surname, Forename" contain a comma.** Set **Multi-value separator** to semicolon or pipe, or each name is split in two.

## What is left out

- A column on **Ignore this column**.
- A row with an empty title. The whole row fails.
- A value that does not fit the field's type, such as text in a number field.
- A name, parent or dependency that matches nothing.

The import shows a warning for each value it leaves out.

## What works differently from Excel

- A sheet becomes a view. The items are stored once, and every view shows the same items. A change made in one view shows up in all of them.
- A field holds one kind of value. A field has a type, such as number, date, select or people.
- A formula belongs to the field. A formula field has one formula, written in the field's settings, and every item calculates its own value. It names other fields by title, such as `{Hours} * {Rate}`.
- Totals are calculated for you. A list's total row takes a function for each column under **Total**, such as **Sum**. A parent item can show a figure calculated from the items under it, set by the field's **Rollup**.

## Importing again

> **Importing the file a second time adds its rows again, unless you match them.** To update the items an earlier import made, match by a column mapped to an existing text or number field.

## Next

- [How re-importing a plan works](../re-importing-a-plan/)
- [Types, fields, views and hierarchy](../../get-started/types-fields-views-hierarchy/)
- [How values roll up to a parent](../../how-it-works/rollups/)
- [Formula fields](../../types-and-fields/formula-fields/)
