Skip to main content

The CSV importers

Import FET's exported list files one section at a time — and the one ordering rule that is worth getting right the first time.

FET can export each of its lists as a separate CSV file. Seven of those files are read here, each into its own section of the data editor, so you can bring in one list at a time instead of the whole project at once.

The seven files

  • Teachers — the teacher list.
  • Subjects — the subject list.
  • Activity tags — the tag list.
  • Rooms and buildings — one file covering both, as it is in FET.
  • Students — years, groups and subgroups, with their nesting.
  • Activities — the activity list, which is the file that actually carries a school's teaching load before any timetable has been generated.
  • Teacher not-available times — the one file that carries rules rather than a list. It is imported from Time constraints, not from Teachers.

Each is imported from its own section: open the section in the data editor and use its CSV import button. The file is read, you are shown what it will do, and nothing is written until you confirm.

The not-available file replaces, it does not add to

The first six files add what is missing and leave the rest alone. The teacher not-available file behaves differently, because of what it contains: FET writes a complete grid — every teacher against every hour, with a mark where that teacher cannot teach.

An empty cell is not "no information". It is the file saying this teacher is free then. So importing one replaces the not-available times of the teachers it lists, which is the only way a freed-up slot can actually be applied.

Teachers the file does not mention are left completely alone, so a file covering three teachers cannot disturb the other thirty.

Before it writes anything you are told how many restrictions will be removed, how many will be written, and how many teachers are untouched. There is no undo, so take a backup first if the timetable matters.

A teacher whose name is not already in the timetable is skipped rather than created — this file adjusts existing people, it does not introduce new ones.

A mark can be a preference rather than a block

The cells in that file are not ticks — each one carries a weight from 0 to 100, and the weight changes what the mark means.

100 means "cannot". That is the ordinary case, and it becomes a plain teacher not available rule.

Below 100 means "would rather not". A "not available" rule has no weaker setting — it is absolute or it is nothing — so a weighted mark is recorded the other way round: as preferred time slots listing everywhere the teacher's lessons may go, at that weight. It is the same restriction stated positively.

FET has no import mode for this. FET's own help tells you to use preferred times when you need a weight below 100. This importer does that step for you.

You do not choose between them and there is no setting to get wrong. If a file contains any weighted cells the import tells you so before it writes, and names the weights it found.

Import students before activities

This is the one rule worth following exactly.

If an activity names a student set that does not exist yet, the set is created flat — and it is never upgraded to a proper year-group-subgroup structure afterwards.

Import the students file first and the hierarchy arrives correctly. Import activities first and you get a pile of flat groups that look right in a list and behave wrongly everywhere structure matters. Fixing it afterwards means deleting and redoing them.

The same auto-creation applies to teachers, subjects and activity tags named by an activity row. For those it is harmless — a teacher is a teacher — which is exactly why the student case catches people out.

Preview before commit

Choosing a file does not import it: the columns it recognised, what it would add, what it would skip because it is already there, and the row it could not use.
Choosing a file does not import it: the columns it recognised, what it would add, what it would skip because it is already there, and the row it could not use.

Choosing a file does not import it. The file is read first and you get a summary of what would happen: how many rows were understood, what will be created, and any warnings about rows that could not be used. Rows with no name are reported and skipped rather than silently creating blanks.

Only when you confirm is anything written.

Things about the format worth knowing

You do not need to prepare FET's own exports at all — they are read as they come. These matter when you are building a file by hand or editing one in a spreadsheet.

  • Filenames are matched by suffix. FET prefixes exports with the timetable name, so myschool_teachers.csv is recognised as the teachers file. Keep the suffix and the prefix can be anything.
  • The byte-order mark is expected. FET writes one, and it is stripped on read. A file saved without one is fine too.
  • The separator is detected per file rather than assumed, so a semicolon-separated export works as well as a comma-separated one.
  • Resource cells nest. A | separates one split component from the next, and a + separates members within a component — so a cell can name several teachers for one lesson, or different teachers per component.
  • Subject names are not split on +. A subject may legally contain a plus sign in its name, so splitting it would truncate the name. If you have been putting several subjects in one cell, that is not a thing the format supports.
  • An empty numeric cell means "no constraint", not zero. Leaving a minimum- days cell blank does not impose a minimum of nothing — it means the constraint is absent.

What you get afterwards

A timetable built from these files holds a real activity list, so it behaves like a project rather than a picture of one: durations and split components are present, and what you download is built from actual data.

Where to go next