Programatically, CSVs are generally easier to work with than an XLS, but it can be done. There are two problems with this unfortunately.
1) There's no caching. As the file gets longer and longer, so will the page load, significantly moreso than a DB call would.
2) If multiple robots are writing to a single file, you could have a file lock error, or (more likely) a case of data loss. Say bot A opens the file, then bot B opens it. Bot A appends and saves, then so does bot B. Since bot B appended to the original file and overwrote what was on disk, the data added by bot A is lost.
You could get around point 2 by collecting multiple files and looping through them all, but this may also increase load time.
If you instead dump the results to a DB, you get caching as well as the benefit of simultaneous connections/writes. Likewise, it would probably be a lot easier to query different data if you want to make multiple types of reports. For example, we have a custom table to house our results and generate ten different types of reports based off of that data.