[Catalyst-dev] RFC: Catalyst::Action::Serialize::SimpleExcel

Rafael Kitover rkitover at io.com
Tue Nov 11 12:17:37 GMT 2008


svn:
http://dev.catalyst.perl.org/repos/Catalyst/Catalyst-Action-Serialize-SimpleExcel/1.000/trunk/

dev release on CPAN
R/RK/RKITOVER/Catalyst-Action-Serialize-SimpleExcel-0.01_01.tar.gz

NAME
     Catalyst::Action::Serialize::SimpleExcel - Serialize tables to Excel
     files

VERSION
     Version 0.01_01

SYNOPSIS
     Serializes tabular data to an Excel file. Not terribly configurable, but
     should suffice for simple purposes.

     In your REST Controller:

         package MyApp::Controller::REST;

         use parent 'Catalyst::Controller::REST';
         use POSIX 'strftime';

         __PACKAGE__->config->{map}{'application/vnd.ms-excel'} = 'SimpleExcel';

         sub books : Local ActionClass('REST') {}

         sub books_GET {
             my ($self, $c) = @_;

             my $rs = $c->model('MyDB::Book')->search({}, {
                 order_by => 'author,title'
             });

             my @t = map {
                 my $row = $_;
                 [ map $row->$_, qw/author title/ ]
             } $rs->all;

             my $entity = {
                 header => ['Author', 'Title'], # will be bold
                 column_widths => [30, 50], # in characters
                 rows => \@t,
         # the part before .xls, which is automatically appended
                 filename => 'myapp-books-'.strftime('%m-%d-%Y', localtime)
             };

             $self->status_ok(
                 $c,
                 entity => $entity
             );
         }

     In your javascript, to initiate a file download:

         // this uses jQuery
         function export_to_excel() {
             $('<iframe '
              +'src="/rest/books?content-type=application%2Fvnd.ms-excel">')
             .hide().appendTo('body');
         }

     Note, the content-type query param is required if you're just linking to
     the action. It tells C::C::REST what you're serializing the data as.

DESCRIPTION
     Your entity should be either an array of arrays, or the more embellished
     format described in the "SYNOPSIS".

AUTHOR
     Rafael Kitover, "<rkitover at cpan.org>"

BUGS
     Please report any bugs or feature requests to
     "bug-catalyst-action-serialize-simpleexcel at rt.cpan.org", or through
     the web interface at
     <http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Catalyst-Action-Serializ
     e-SimpleExcel>. I will be notified, and then you'll automatically be
     notified of progress on your bug as I make changes.

TODO
     *   Split into mutliple overridable methods.

     *   Multiple sheet support.

     *   Autofit support (would require a macro.)

SUPPORT
     You can find documentation for this module with the perldoc command.

         perldoc Catalyst::Action::Serialize::SimpleExcel

     You can also look for information at:

     *   RT: CPAN's request tracker

         <http://rt.cpan.org/NoAuth/Bugs.html?Dist=Catalyst-Action-Serialize-
         SimpleExcel>

     *   AnnoCPAN: Annotated CPAN documentation

         <http://annocpan.org/dist/Catalyst-Action-Serialize-SimpleExcel>

     *   CPAN Ratings

         <http://cpanratings.perl.org/d/Catalyst-Action-Serialize-SimpleExcel
         >

     *   Search CPAN

         <http://search.cpan.org/dist/Catalyst-Action-Serialize-SimpleExcel/>

COPYRIGHT & LICENSE
     Copyright (c) 2008 Rafael Kitover

     This program is free software; you can redistribute it and/or modify it
     under the same terms as Perl itself.




More information about the Catalyst-dev mailing list