Beefy Boxes and Bandwidth Generously Provided by pair Networks
We don't bite newbies here... much
 
PerlMonks  

Odd crash involving Spreadsheet::WriteExcel

by blue_cowdawg (Monsignor)
on Nov 21, 2011 at 21:00 UTC ( #939317=perlquestion: print w/ replies, xml ) Need Help??
blue_cowdawg has asked for the wisdom of the Perl Monks concerning the following question:

Consider the following code sniglet:

$worksheet->merge_range(intToRange($row,$column,$row,$column+5), "EDMTA Instances",$title_fmt); $row++; if ( $#edmta_instances < 0 ) { $worksheet->write($row++,$column+1,"None"); } else { foreach my $edmta(@edmta_instances){ $worksheet->write($row++,$column+1,$edmta); } } $row++; my $range = intToRange($row,$column,$row,$column+5); printf "%s\n",$range; my $title_fmt2 = $workbook->add_format( valign => 'vcenter', align=>'center'); $worksheet->merge_range($range,"INET Instances",$title_fmt2);

The first call to merge_range works fine, and the second bombs with:

Incorrect number of arguments at ./mailoutInventory.pl line 285 Use of uninitialized value in numeric eq (==) at /usr/lib/perl5/site_p +erl/5.14.2/Spreadsheet/WriteExcel/Workbook.pm line 1545 during global + destruction. (in cleanup) Can't call method "_prepare_images" on unblessed +reference at /usr/lib/perl5/site_perl/5.14.2/Spreadsheet/WriteExcel/W +orkbook.pm line 1546 during global destruction.

The range I'm trying to set is KW1:KW6 (or row 389) which doesn't seem outrageous to me.

Thoughts anyone? Anybody else run into this sort of issue?


Peter L. Berghold -- Unix Professional
Peter -at- Berghold -dot- Net; AOL IM redcowdawg Yahoo IM: blue_cowdawg

Comment on Odd crash involving Spreadsheet::WriteExcel
Select or Download Code
Replies are listed 'Best First'.
Re: Odd crash involving Spreadsheet::WriteExcel
by Corion (Pope) on Nov 21, 2011 at 21:15 UTC

    My guess is that $range does not contain what you think it does and/or that intToRange returns a list where you expect it to return a scalar?

    I assume that intToRange is something like Spreadsheet::WriteExcel::Utility::xl_range_formula, but the current documentation for Spreadsheet::WriteExcel documents ->merge_range as

    ->merge_range($first_row, $first_col, $last_row, $last_col, $token, $f +ormat, $utf_16_be)

    ... so the call to intToRange seems completely unnecessary.

Re: Odd crash involving Spreadsheet::WriteExcel
by jmcnamara (Monsignor) on Nov 22, 2011 at 09:54 UTC

    I'd say Corion is right here.

    As an aside, I tend to debug a lot of this type of issues, in the first instance, with Devel::SimpleTrace:

    perl -wMDevel::SimpleTrace program.pl

    --
    John.

SOLVED: Odd crash involving Spreadsheet::WriteExcel
by blue_cowdawg (Monsignor) on Nov 22, 2011 at 15:23 UTC

    After using Devel::SimpleTrace I discovered that the messages I was seeing were misleading. The issue was actually happening during the automatic close of the workbook object as the script was exiting.

    After I added

    $workbook->close();
    prior to the steps I take to email the spreadsheet that is created the errors went away.

    Much thanks to Corion and jmcnamara for the assist.


    Peter L. Berghold -- Unix Professional
    Peter -at- Berghold -dot- Net; AOL IM redcowdawg Yahoo IM: blue_cowdawg

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://939317]
Approved by ww
Front-paged by ww
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others pondering the Monastery: (18)
As of 2015-07-30 13:33 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (271 votes), past polls