I agree with Jeff Beck's comments and also noted the following.
You said that your target audience is not technical, and all of the above solutions will be related to learning HTML and a complex template language, which may not be the starting one for your audience.
The above solutions also need more complexity than your problem requires. MooTools, Dojo, etc. Seem redundant. XForms and XSLT even more so. Yes, they will work and give you additional functionality, but do you need the level of complexity and debugging / support / training problems that come with these additional functions?
Your regular teacher or business user may have a general idea of how to enter and save files in Excel. If you can teach them to save in CSV format and upload a form, or even better, install a macro that will be saved in CSV and publish it on your website, then this is probably the only training they need. To get the semantics, you can add a little more training and have the first row of the report — column names, and the second row — column type. It's not elegant, but easy, perhaps for those programmed with technology, to accept, as Jeff points out.
On the server side, I recommend the following stack:
Web server => node.js (possibly using Chain - github.com/hassox/chain)
Data Warehouse => Redis (and node -redis)
Templating => Haml-js (github.com/creationix/haml-js)
CSV parsing => See http://purbayubudi.wordpress.com/2008/11/09/csv-parser-using-javascript/ and be sure to use the fixed version, which is in the comments (for quoted commas).
Your more experienced users can configure HAML without compromising security, and HAML is pretty simple with a little training: this HAML ...
%body .profile .left.column
produces ...
<div class="profile"> <div class="left column"> <div id="date">Thursday, October 8, 2009</div> <div id="address">Richardson, TX</div> </div> <div class="right column"> <div id="email"> tim@creationix.com </div> <div id="bio">Experienced software professional...</div> </div> </div>