Beefy Boxes and Bandwidth Generously Provided by pair Networks
"be consistent"
 
PerlMonks  

Re: Using Spreadsheet::WriteExcel with mod_perl and Content-Disposition?

by jlawrenc (Scribe)
on Mar 15, 2001 at 01:25 UTC ( [id://64500]=note: print w/replies, xml ) Need Help??


in reply to Using Spreadsheet::WriteExcel with mod_perl and Content-Disposition?

Dear one4k4,

I am going to offer you a few suggestions in hopes that it might help you out.

I assume you have a simple mod_perl request handler working, eh? If you do not make sure you can at least return "hello world" to your browser! :) After that you should only need to do:

sub handler { my $r=shift; # generate your Spreadsheet binary and put it in, oh # $sheet, ok? $r->content_type('application/vnd.ms-excel'); $r->header_out('Content-disposition' => "attachment; filename=\"$fi +lename""); $r->send_http_header; $r->print($sheet); return DONE; }
Let me know how this goes. I've been meaning to do this myself! :) Thanks for prompting me to look into this.

J

Replies are listed 'Best First'.
Re: Re: Using Spreadsheet::WriteExcel with mod_perl and Content-Disposition?
by one4k4 (Hermit) on Mar 15, 2001 at 01:31 UTC
    # generate your Spreadsheet binary and put it in, oh # $sheet, ok?
    So, I still need to generate the file, and read it into $somevariable do I?
    Could I take the Spreadsheet::WriteExcel->new("-") call (STDOUT(?)) and stuff that onto $somevariable?

    If I run the following code...
    # Send the content type my $name = "testing.xls"; print "Content-disposition: attachment; filename=$name\n"; print "Content-type: application/vnd.ms-excel\n\n"; # Redirect the output to STDOUT my $workbook = Spreadsheet::WriteExcel->new("-"); my $worksheet = $workbook->addworksheet(); $worksheet->write(0, 0, "This should work."); $worksheet->write(0, 1, "In theory."); $workbook->close();
    It'll prompt the user to save the file, (named excel - because of mod_perl) When they click "ok" to save it, its called "testing.xls" like it should be.
    But the spreadsheet is empty... :=/
    Hrm, interesting
    I like problems like this. I always end up learning something new. Yay.


    _14k4
      If you want to write to a scalar instead of a file I can send you a patch (it will be in the next version) that will let you do this:
      #!/usr/bin/perl -w use strict; use IO::Scalar; use Spreadsheet::WriteExcel; my $xls_str; tie *XLS, 'IO::Scalar', \$xls_str; my $workbook = Spreadsheet::WriteExcel->new(\*XLS); my $worksheet = $workbook->addworksheet(); $worksheet->write(0, 0, "Hi Excel!"); $workbook->close(); # The Excel file is now in $xls_str.
      or to some other filehandle like this:     my $workbook  = Spreadsheet::WriteExcel->new(\*STDOUT);

      John.
      --
      And the eighth and final rule, if this is your first time using Perl, you will have to write code.

        Ohhhh, see, that only makes sense. If its in a newer ver, dont go out of your way for little old one4k4. But thank you for the insight. :)
Re: Re: Using Spreadsheet::WriteExcel with mod_perl and Content-Disposition?
by one4k4 (Hermit) on Mar 15, 2001 at 01:44 UTC
    Oh, and a second thing... do I have to try to return "hello world". I really only want to talk to myself, so would "Hello me" work as well? :)

    Ok, its 4pm, and I'm tired. Give me a break. :)

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://64500]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others pondering the Monastery: (6)
As of 2024-03-28 14:05 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found