Reporting capabilities are a common business requirement from clients while building web applications. The problem is that clients often get carried away with the amount of reports that they think they need. A common scenario is one where they will think of and define every conceivable report that might be needed (whether it is actually needed or not). This in turn increases the time it takes to complete the application as well as increasing the cost of the project.
Clients often then find that they wind-up using a small fraction of the reports once the application is live. Over time, they inevitably come back with new requests for us to build new reports because they have had some time to use the application and have now got a feel for what is really needed for reports.
To avoid this we will typically recommend to clients during the requirements phase is that if you have reports that you will absolutely know you need and will use, then those reports should be included in the requirements. For reports that you *might* need, a good approach is to simply build some data export functionality into the application.
This way, raw data can be exported from the system (as a .csv file or similar), and then can be easily imported into Microsoft Excel, or some equivalent tool. The tools can then be used offline to slice and dice the data – in a sense, creating any report that might be needed. Then, if you find that you are creating the same Excel reports over and over again, those reports become good candidates to add to add to the web application’s reporting functionality. This approach will save you time and money.