Beefy Boxes and Bandwidth Generously Provided by pair Networks
The stupid question is the question not asked
 
PerlMonks  

Error parsing large xlsx

by raja.ghosh (Initiate)
on May 13, 2016 at 20:52 UTC ( [id://1162995]=perlquestion: print w/replies, xml ) Need Help??

raja.ghosh has asked for the wisdom of the Perl Monks concerning the following question:

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" ; }

Replies are listed 'Best First'.
Re: Error parsing large xlsx
by runrig (Abbot) on May 13, 2016 at 22:36 UTC

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others having an uproarious good time at the Monastery: (3)
As of 2024-04-19 04:18 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found