The problem is due to the fact that the Workbook and Worksheet objects have different scope.

The Workbook object falls out of scope at the end of new_agency() and its DESTROY sub is invoked. This reaps the data written thus far and writes it out to a file.

The Worksheet object isn't DESTROYed since you maintain a reference to it. So, you can continue writing to it but it's parent Workbook is no longer there.

The solution is to return a reference to the Workbook as well as the Worksheet so that they both have the same scope:

sub new_agency { #... return($worksheet, $workbook); } # And later: my ($w, $wb) = new_agency ($header, $acronym);

In situations where you are creating Workbook and Worksheet objects in subs it is best to explicitly call the Workbook close() method to ensure that destruction is performed in the correct order.

--
John.


In reply to Re: Spreadsheet::WriteExcel - writes the header but no subsequent rows by jmcnamara
in thread Spreadsheet::WriteExcel - writes the header but no subsequent rows by princepawn

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.