summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/Spreadsheet/ParseXLSX.pm9
-rw-r--r--t/bug-13.t11
-rw-r--r--t/data/bug-13.xlsxbin0 -> 8639 bytes
3 files changed, 16 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');
diff --git a/t/bug-13.t b/t/bug-13.t
new file mode 100644
index 0000000..ded3406
--- /dev/null
+++ b/t/bug-13.t
@@ -0,0 +1,11 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+use Test::More;
+
+use Spreadsheet::ParseXLSX;
+
+my $wb = Spreadsheet::ParseXLSX->new->parse('t/data/bug-13.xlsx');
+is($wb->get_filename, 't/data/bug-13.xlsx');
+
+done_testing;
diff --git a/t/data/bug-13.xlsx b/t/data/bug-13.xlsx
new file mode 100644
index 0000000..c516813
--- /dev/null
+++ b/t/data/bug-13.xlsx
Binary files differ