We used to extract data from the databases and store the output in csv file.
e.g.
Year, Month, Day, YTD_Target, Actual_Amount, Branch
2010,10,05,5000,4500,124567
2010,05,05,4000,10,123456
Then you import the data into a spreadsheet such as excel and store each column as a separate column. Then format each worksheet as you want the user to see it and write a macro to grab the data from the imported column and do what ever you wish with it. As the raw data is stored you can either protect the worksheets with a password or if you have some power-users you can open it up to them in order to empower their division or branch.
Initially, this does take some time to set-up. But if your consistent with your data and the way you set-up your reports the whole thing can be automated. So, all you do is click a button in order for it to run. We used to run a similar process, providing data and spreadsheet report for about 200 groups and reporting down to about 2000 banking branches. Each branch reporting on about 100+ products. This was completed in about 4 hours from start to finish, including checking the financial side to make sure they all added back to what had been produced for each branch upwards.