Actually, what I normally do is to generate the report output as an XML file, then run it through XSLT ... or simply let the web browser do that work for me. Simply adopt a consistent structure for the XML data that you intend to report. (Going so far as to define a schema that can be validated is probably a good thing.) Then, set up an XSLT stylesheet that can be used to turn all of them into good-looking output with CSS stylesheets and so forth. It can do a lot of things for you which you therefore don’t have to do in code, and it looks a heck of a lot more professional than “line-printer art.” Using XML also makes the report output in-general more of a resource, that can be used for other things.
(If you want to see just what this technology is capable of, look at this interactive table of the elements which was created in this way ... virtually no programming required.)