Hi, I am trying to read only the first worksheet of a large excel (2007) file (=xlsx) which has multiple worksheets. Based on pointers in the web, I am trying to use the cell_handler. But I don't think it is working. Perl is ignoring the cell_handler & parsing all sheets (& giving out-of-memory error). I am using Spreadsheets::ParseXLSX version 0.16 with Perl 5.10.

Any pointers welcome!

Thank you.

use Spreadsheet::ParseXLSX ; use strict; my $parser = Spreadsheet::ParseXLSX->new( CellHandle => \&cell_handler, NotSetCell => 1, ); print "Before Parser...\n" ; my $workbook = $parser->parse('/path/to/my/xlsx') ; print "After Parser...\n" ; if ( !defined $workbook ) { print "Error parsing file... \n" ; die $parser->error(), ".\n"; } my $worksheet = $workbook->worksheet('my_first_sheet'); print $worksheet->{Name} . "\n" ; my ( $row_min, $row_max ) = $worksheet->row_range(); my ( $col_min, $col_max ) = $worksheet->col_range(); for my $row ( $row_min .. $row_max ) { for my $col ( $col_min .. $col_max ) { my $cell = $worksheet->get_cell( $row, $col ); next unless $cell; print "Row, Col = ($row, $col)\n"; print "Value = ", $cell->value(), +"\n"; } } sub cell_handler { my $workbook = $_[0]; my $sheet_index = $_[1]; my $row = $_[2]; my $col = $_[3]; my $cell = $_[4]; # Skip unwanted worksheets if ( $sheet_index > 0 ) { $workbook->ParseAbort(1); print "sheet_index > 0... aborting extraction! \n" ; return; } print "Inside cell_handler...\n" ; }

In reply to Error parsing large xlsx by raja.ghosh

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.