[Please Merge] 957 xls report upload

- the only bits left before this is mergeable is to do ui cleanup when a file is upload
This and below 3 new functions all need tests and documentation, e.g.

```clojure
(defn some-func
    "Some func expects these and does these things."
    [arg]
    ....)
```