I created a module that I've been using happily in house for generating quick reports. It does a few things automatically and simplifies the Spreadsheet::WriteExcel interface.
* Automatic Cell Width Adjustment based on text width * Borders around all the data Example: my $report = Spreadsheet::Report::Basic->new({ title => 'My Simple Report', filename => 'mysimple.xls', alignment => 'portrait', }); # Setup the Column Headers $report->columnHeaders( 'ID', 'Date', 'Credit', 'Debt', 'Category' ); # Add Data $report->addRow(1, '2009-03-30', 0, 20.00, 'Grocery'); # Add a new format $report->addFormat('credit', { color=>'green', bold => 1 } ); # Use that: $report->custom_row( 'credit', 1, '2009-04-01', 2000.00, 0, 'Bank Error'); # Insert a blank row: $report->blank_row(); The really "neat" part of the interface is the handling of the reporting. If you want to save it: $report->WriteToFile( '/tmp' ); If you want to Email it: $report->EmailReport({ to => 'm...@domain.com', cc => [ qw(someonec...@domain.com anotherper...@domain.com) ] }); If you want to incorporate it into a website, and the person is downloading the report: my $c = new CGI; $report->OutputToBrowser( $c ); There's also a multisheet capable version named Spreadsheet::Report::Multi. My question is, do you think the CPAN needs another spreadsheet module? If so, is this set of modules aptly named? -- Brad Lhotsky