http://www.perlmonks.org?node_id=939317

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

Replies are listed 'Best First'.
Re: Odd crash involving Spreadsheet::WriteExcel
by Corion (Patriarch) 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