diff options
author | Stuart Watt <stuart@morungos.com> | 2015-09-01 14:36:31 -0400 |
---|---|---|
committer | Stuart Watt <stuart@morungos.com> | 2015-09-01 14:36:31 -0400 |
commit | 44f6095337975eb5bc004a45e1147d0ba4652753 (patch) | |
tree | 5fdb5bf3f26ec3be2a5f513241e0f69a9ff6df65 /lib | |
parent | 53bf90652bf21ba5ed934af67e37737b7ffa2b1a (diff) | |
download | spreadsheet-parsexlsx-44f6095337975eb5bc004a45e1147d0ba4652753.tar.gz spreadsheet-parsexlsx-44f6095337975eb5bc004a45e1147d0ba4652753.zip |
Don't parse sheets where there's no extracted file. See #38
See discussion at: https://github.com/doy/spreadsheet-parsexlsx/issues/38. The patch is a little different from the minimal one suggested initially, because we probably don't even want to return a sheet when we can't parse it.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Spreadsheet/ParseXLSX.pm | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/lib/Spreadsheet/ParseXLSX.pm b/lib/Spreadsheet/ParseXLSX.pm index 1698acd..cb20013 100644 --- a/lib/Spreadsheet/ParseXLSX.pm +++ b/lib/Spreadsheet/ParseXLSX.pm @@ -110,13 +110,17 @@ sub _parse_workbook { my @sheets = map { my $idx = $_->att('r:id'); - my $sheet = Spreadsheet::ParseExcel::Worksheet->new( - Name => $_->att('name'), - _Book => $workbook, - _SheetNo => $idx, - ); - $self->_parse_sheet($sheet, $files->{sheets}{$idx}); - $sheet + if ($files->{sheets}{$idx}) { + my $sheet = Spreadsheet::ParseExcel::Worksheet->new( + Name => $_->att('name'), + _Book => $workbook, + _SheetNo => $idx, + ); + $self->_parse_sheet($sheet, $files->{sheets}{$idx}); + ($sheet) + } else { + () + } } $files->{workbook}->find_nodes('//sheets/sheet'); $workbook->{Worksheet} = \@sheets; |