[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