I love Google's Spreadsheet. I know there's API to dynamically create and read/write spreadsheets. If there was a way to embed their spreadsheet in an existing page while still keeping it editable (not just an html output widget) then it would surpass every solution mentioned in this article. It allows copy-pasting, read/write XLS files, mouse-selection, formulas, and filtering.<p>If you're writing a web-app, you can relatively easily create a new spreadsheet-per-account on the fly, set it up with the right-structure, and just let the user do whatever they want. Periodically you can check the format/content and tell the user if something is invalid (missing column header, missing row data etc.) When everything is ok, the user hits save and you grab all the data from Google using their API. The best part is that each Google Spreadsheet comes with history so if a user doesn't screw something up, they can revert to an older version that worked instantly. Of course, you have to write your code to handle such features.