In some respects, reports and other forms of application output (other than the user interface itself) can be the most difficult part of the application. The problem is that many developers underestimate the difficulty of this particular component and end up seriously stressed trying to create it. It's important to realize from the outset that reports and other kinds of output are difficult to create for the following reasons (the list uses the word report to refer to all kinds of output):
Reports are an emotional component of the application and not everyone reacts the same to them.
User needs for report information vary by user, so a report that looks fine to one user won't meet the needs of another user (conceivably, you could be required to create one or more reports for every user).
Device capabilities for outputting reports vary greatly, so writing code to address individual devices can be difficult.
The .NET Framework doesn't provide the functionality required to produce truly useful reports without writing a lot of additional code — you must rely on a third-party product to perform the task if you want to get the reports done before you're old and gray. (Exporting content from a grid to Excel doesn't count as a report — that's a dump and a topic for another discussion.)
It's probably impossible to get a complete list of reports at the outset of the application design process. However, you should get as many reports designed as possible ...