Excel & CSV
Reads .xlsx, .xls and .csv. The text encoding is detected, so UTF-8 without a byte order mark, UTF-16 and Windows-1252 all arrive intact.
Your users upload a spreadsheet and say which column is which. You get the data in the shape your app expects.