Squads and schedules as a table

Typing in 18 players one by one? No need. myHandballStats reads player lists and match schedules from a CSV table – and writes them back out the same way.

In short: type it in Excel or Numbers → Save as → CSV → import it in the app under Settings → Lists → check the preview → apply. Reading a file and seeing the preview is free; applying and exporting are Premium.

Five steps

  1. Get the template. In the app: Settings → Lists → Create empty template. It contains the header row and one example row, so it is obvious what goes where.
  2. Fill it in with Excel or Numbers. One row per player and team (see below). Extra columns do no harm – they are ignored and listed in the preview.
  3. Save as CSV. Excel: File → Save as, file format CSV UTF-8. Numbers: File → Export To → CSV.
  4. Import it. Settings → Lists → Import player list, then pick the file.
  5. Check the preview, then apply. The preview shows what will happen beforehand: how many players are added, how many updated, and which rows are skipped and why. Nothing is written until you tap Apply.

The player list

One row per squad entry. Someone who plays for two teams appears twice – once per team. The reason: the number and position belong to the team, not to the player (number 7 in the second team, 23 in the first). A player without a team appears once with an empty team column.

ColumnRequiredMeaning
spieler_id–Only present in the app's own export. Leave it empty when typing yourself.
nameyesMust not be empty.
nummeryesDefault shirt number, a whole number above 0.
position–TW LA RL RM RR RA KM XX (goalkeeper, left wing, …); empty = no fixed position.
team–Team name as plain text. Unknown teams are created.
team_nummer–Number in this team. Empty = the default number applies.
team_position–Position in this team.

The column keys stay in German on purpose: that way a file exported on a Danish or Polish phone still imports on a German one. The app also recognises the usual English headings (“name”, “number”, “position”, “team”).

The schedule

ColumnRequiredMeaning
spiel_id–Only in the app's own export.
datumyes2026-03-14 or 14.03.2026.
uhrzeit–19:30 – throw-off time.
heimyesHome team.
gastyesAway team.
team–Your own team. If the column is missing, pick it once in the preview.
auswaerts–ja/nein (yes/no). Empty? It is derived from the names.
saison–Season name; empty = the current season.
runde–Round – a number or text, e.g. 12 or Semi-final. Older files with spieltag are still read.
heim_tore, gast_tore–Final score. Empty means “no result yet”, not 0.

What the import never does

If something goes wrong

Accented characters look broken

The file was not saved as UTF-8. In Excel, choose CSV UTF-8 when saving. myHandballStats also tries the old Windows encoding and says so in the preview – but UTF-8 is the safe route.

“Required columns are missing from the header row”

The first row must hold the column names – at least name and nummer (for a schedule: datum, heim, gast). Common headings such as “shirt number” or “club” are recognised too. The quickest way is the template from the settings.

“Name is ambiguous”

Two players already carry that name. The app does not guess which one you mean and skips the row. Either rename one of them or use the spieler_id column from an export.

A date is not accepted

03/04/2026 is 3 April in one country and 4 March in another – so it is rejected rather than guessed. Use 2026-03-14 or 14.03.2026.

What Premium covers – and what it does not

Picking a file and looking at the preview is free, so you can see what the import would do before you buy anything. Applying and exporting are Premium. You do not need it to get your data out: the full backup in the settings is free and moves data both ways between an iPhone and an Android device.

Opens the print dialog – choose “Save as PDF” there. The page is laid out for it.