SQL Server Reporting Services is a great tool to bring together data and get a nice looking output. My favourite is to render directly to PDF using URL parameters as detailed on MSDN at:
In terms of layout, rectangles are your friend… they are great to group items such as text boxes and have properties such as start a new page before which come in very handy.
For the data itself, you can name an element such as a textbox and retrieve the value when you need it somewhere else using ReportItems(“Name of Text box”).Value. If it’s a number field, don’t forget to wrap it in a CDbl() statement. e.g. CDbl(ReportItems(“TotalSales”).Value).