sub new {
my $class = shift;
my (%args) = @_;
my $self = bless {}, $class;
$self->{Password} = $args{Password} if defined $args{Password};
#
#my new options
#
$self->{sheet_filter} = $args{sheet_filter} if defined $args{sheet_filter};
$self->{just_find_sheet_names} = $args{just_find_sheet_names} if defined $args{just_find_sheet_names};
return $self;
}
####
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 {
()
}
} $files->{workbook}->find_nodes('//s:sheets/s:sheet');
####
#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');
####
#my hack to only return the list of sheet names
if($self->{just_find_sheet_names}) {
my @sheets = map {
$_->att('name');
} $files->{workbook}->find_nodes('//s:sheets/s:sheet');
$workbook->{Worksheet} = \@sheets;
$workbook->{SheetCount} = scalar(@sheets);
return $workbook;
}