#my hack to only process worksheets matching the sheet filter my %sheet_filter=(); if ($self->{sheet_filter}) { map {$sheet_filter{$_}} split ",", $self->{sheet_filter}; } my @sheets = map { my $idx = $_->att('rels:id'); if ($files->{sheets}{$idx}) { my $sheet = Spreadsheet::ParseExcel::Worksheet->new( Name => $_->att('name'), _Book => $workbook, _SheetNo => $idx, ); $sheet->{SheetHidden} = 1 if defined $_->att('state') and $_->att('state') eq 'hidden'; $self->_parse_sheet($sheet, $files->{sheets}{$idx}); ($sheet) } else { () } } grep {%sheet_filter ? defined $sheet_filter{$_->att('name')} : 1} $files->{workbook}->find_nodes('//s:sheets/s:sheet');