[cgiapp] Output an excel file

fREW Schmidt frioux at gmail.com
Fri Aug 28 17:30:24 EDT 2009


This is my (coworkers) problem:

My web app runs on Apache mod_perl using CGI::Application. I want to provide
a download of a generated file. In the past (before we were using
mod_perland CGI::App) I just spooled out a csv file to
STDOUT as it was generated. Now I'm shooting for a little more refinement -
creating an Excel spreadsheet using Spreadsheet::WriteExcel - and I can't
seem it to get to print it out from the file handle.

sub export_list {
  my $self = shift;



  binmode(STDOUT);

  my $str;


  open my $fh, '>', \$str;


  my $workbook = Spreadsheet::WriteExcel->new($fh);


  my $worksheet = $workbook->add_worksheet();



  $worksheet->write_col(0,0, ['some','data','here']);


  warn $str;
  return $str;
}


The output is just a blank response, and the warn is blank as well.

The method I'm using to write the spreadsheet to a filehandle is pretty much
straight out of the
documentation<http://search.cpan.org/dist/Spreadsheet-WriteExcel/lib/Spreadsheet/WriteExcel.pm#new%28%29>,
so I assume the problem is due to some CGI::App noobery on my part. The
documentation's suggested methods for filehandles and mod_perl proved pretty
fruitless as well.

I guess I should mention I'm running on Windows, and that my current
workaround is to create a file and provide the user with a link to it. That
poses more problems, however, in regards to clearing out the directory and
when to do so, and also authentication for access to the generated files.

Suggestions? Scathing criticism?

(
http://stackoverflow.com/questions/1349132/how-can-i-provide-a-temp-file-download-using-modperl-and-cgiapplication
)

-- 
fREW Schmidt
http://blog.afoolishmanifesto.com


More information about the cgiapp mailing list