diff options
Diffstat (limited to 'lib/Spreadsheet/ParseXLSX.pm')
-rw-r--r-- | lib/Spreadsheet/ParseXLSX.pm | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/lib/Spreadsheet/ParseXLSX.pm b/lib/Spreadsheet/ParseXLSX.pm index da53bc3..381b16c 100644 --- a/lib/Spreadsheet/ParseXLSX.pm +++ b/lib/Spreadsheet/ParseXLSX.pm @@ -46,30 +46,31 @@ sub parse { my ($file) = @_; my $zip = Archive::Zip->new; + my $workbook = Spreadsheet::ParseExcel::Workbook->new; if (openhandle($file)) { bless $file, 'IO::File' if ref($file) eq 'GLOB'; # sigh $zip->readFromFileHandle($file) == Archive::Zip::AZ_OK or die "Can't open filehandle as a zip file"; + $workbook->{File} = undef; } elsif (!ref($file)) { $zip->read($file) == Archive::Zip::AZ_OK or die "Can't open file '$file' as a zip file"; + $workbook->{File} = $file; } else { die "Argument to 'new' must be a filename or open filehandle"; } - return $self->_parse_workbook($zip); + return $self->_parse_workbook($zip, $workbook); } sub _parse_workbook { my $self = shift; - my ($zip) = @_; + my ($zip, $workbook) = @_; my $files = $self->_extract_files($zip); - my $workbook = Spreadsheet::ParseExcel::Workbook->new; - my ($version) = $files->{workbook}->find_nodes('//fileVersion'); my ($properties) = $files->{workbook}->find_nodes('//workbookPr'); |