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


in reply to Re: Reducing the memory usage of Spreadsheet::ParseExcel
in thread Reducing the memory usage of Spreadsheet::ParseExcel


Once you have access to the $workbook object you can access the worksheet objects and then the sheet name. Something like this:
sub cell_handler { my $workbook = $_[0]; my $sheet_index = $_[1]; my $row = $_[2]; my $col = $_[3]; my $cell = $_[4]; my $worksheet = $workbook->worksheet($sheet_index); my $sheetname = $worksheet->get_name(); print $sheetname, ": ", $cell->{_Value}, "\n"; }
See the main Spreadshhet::PraseExcel documentation for more details on these methods.

In a real world situation you would probably check to see if $sheet_index is the same as a stored previous value and print the sheet name if it isn't.

One thing to look out for is that the callback will only get called for sheets that contain data. So the sheet name of an empty worksheet wouldn't be printed with the above scheme. If this is a use case that you are interested in then you could also handle it by examining the sheet indices.

--
John.