{{define "head"}}
{{/* Drag and drop only. Everything the drop zone does, the form below
it already does with scripting off — drop.js fills that same file
input and submits that same form, so there is one route, one CSRF
check and one code path either way.
This moved here with the form it decorates. It used to sit on the
sheet list, which is where the import form used to be. */}}
{{end}}
{{define "content"}}
Excel .xlsx or .xlsm, up to 20 MB. The first
worksheet is imported.Import a spreadsheet
{{/* The limits are stated BEFORE the import, not discovered after it.
Import reads one worksheet (xlsx.Import), and a workbook with
three of them would otherwise arrive looking whole — the quiet
kind of wrong PRODUCT.md's first principle forbids.
They are a subhead here rather than a hint under the field
because this page has the room the dropdown they nearly went in
did not, and because drop.js overwrites the hint to speak about
a drop — which would take the file limits down with it. */}}
{{.Data.Error}}